# HG changeset patch # User Joshua M. Clulow # Date 1328174211 -39600 # Node ID 739a180bd323d612bb63ba30afce07fc98e04e64 # Parent 776c3d9cae69db72951650c2e5c8d5ee9211aab1 2111 begone, pkcs11_kms! Reviewed by: Alexander Eremin Reviewed by: Jason King Reviewed by: Garrett D'Amore Approved by: Richard Lowe diff -r 776c3d9cae69 -r 739a180bd323 exception_lists/check_rtime --- a/exception_lists/check_rtime Sun Mar 11 22:00:47 2012 -0700 +++ b/exception_lists/check_rtime Thu Feb 02 20:16:51 2012 +1100 @@ -207,9 +207,6 @@ NOSYMSORT lib/amd64/libsun_fc\.so\.1 # C++ NOSYMSORT lib/sparcv9/libsun_fc\.so\.1 # C++ NOSYMSORT usr/lib/amd64/libfru\.so\.1 # C++ -NOSYMSORT usr/lib/libkmsagent\.so\.1 # C++ -NOSYMSORT usr/lib/amd64/libkmsagent\.so\.1 # C++ -NOSYMSORT usr/lib/sparcv9/libkmsagent\.so\.1 # C++ # The libprtdiag_psr.so.1 objects built under usr/src/lib/libprtdiag_psr diff -r 776c3d9cae69 -r 739a180bd323 exception_lists/copyright --- a/exception_lists/copyright Sun Mar 11 22:00:47 2012 -0700 +++ b/exception_lists/copyright Thu Feb 02 20:16:51 2012 +1100 @@ -330,7 +330,6 @@ usr/src/lib/krb5/ss/options.c usr/src/lib/krb5/ss/std_rqs.c usr/src/lib/krb5/ss/utils.c -usr/src/lib/libkmsagent/common/SOAP/*.* usr/src/lib/librstp/common/*.[ch] usr/src/lib/librstp/common/[CRT]* usr/src/uts/intel/nsmb/ioc_check.ref diff -r 776c3d9cae69 -r 739a180bd323 exception_lists/cstyle --- a/exception_lists/cstyle Sun Mar 11 22:00:47 2012 -0700 +++ b/exception_lists/cstyle Thu Feb 02 20:16:51 2012 +1100 @@ -860,79 +860,3 @@ usr/src/uts/intel/sys/acpi/platform/acsolaris.h usr/src/uts/intel/sys/acpi/platform/acwin.h usr/src/uts/intel/sys/acpi/platform/acwin64.h -usr/src/lib/libkmsagent/common/ApplianceParameters.h -usr/src/lib/libkmsagent/common/AutoMutex.h -usr/src/lib/libkmsagent/common/ClientSoapFaultCodes.h -usr/src/lib/libkmsagent/common/KMSAgent.cpp -usr/src/lib/libkmsagent/common/KMSAgent.h -usr/src/lib/libkmsagent/common/KMSAgentAESKeyWrap.h -usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp -usr/src/lib/libkmsagent/common/KMSAgentChallenge.h -usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.cpp -usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.h -usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.cpp -usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.h -usr/src/lib/libkmsagent/common/KMSAgentFatalState.cpp -usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.cpp -usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.h -usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.cpp -usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.h -usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.cpp -usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.h -usr/src/lib/libkmsagent/common/KMSAgentPKICert.cpp -usr/src/lib/libkmsagent/common/KMSAgentPKICertOpenSSL.cpp -usr/src/lib/libkmsagent/common/KMSAgentPKICommon.cpp -usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h -usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp -usr/src/lib/libkmsagent/common/KMSAgentPKIKeyOpenSSL.cpp -usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h -usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.cpp -usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.h -usr/src/lib/libkmsagent/common/KMSAgentStorage.cpp -usr/src/lib/libkmsagent/common/KMSAgentStorage.h -usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.cpp -usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h -usr/src/lib/libkmsagent/common/KMSAgent_direct.h -usr/src/lib/libkmsagent/common/KMSAuditLogger.cpp -usr/src/lib/libkmsagent/common/KMSAuditLogger.h -usr/src/lib/libkmsagent/common/KMSAuditLogger_meta.cpp -usr/src/lib/libkmsagent/common/KMSClientProfile.cpp -usr/src/lib/libkmsagent/common/KMSClientProfile.h -usr/src/lib/libkmsagent/common/KMSClientProfileImpl.h -usr/src/lib/libkmsagent/common/PKICert.cpp -usr/src/lib/libkmsagent/common/SOAP/AgentServiceNamespace.cpp -usr/src/lib/libkmsagent/common/SOAP/CAServiceNamespace.cpp -usr/src/lib/libkmsagent/common/SOAP/CertificateServiceNamespace.cpp -usr/src/lib/libkmsagent/common/SOAP/DiscoveryServiceNamespace.cpp -usr/src/lib/libkmsagent/common/SOAP/KMSAgentWebServiceNamespaces.cpp -usr/src/lib/libkmsagent/common/SOAP/KMSAgentWebServiceNamespaces.h -usr/src/lib/libkmsagent/common/SOAP/KMS_AgentC.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_AgentClient.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_AgentH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_AgentStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_Agent_SOAP.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CAC.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_CAClient.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_CAH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CAStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateC.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateClient.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_Certificate_SOAP.h -usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryC.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryClient.cpp -usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_Discovery_SOAP.h -usr/src/lib/libkmsagent/common/SOAP/envC.cpp -usr/src/lib/libkmsagent/common/SOAP/envH.h -usr/src/lib/libkmsagent/common/SOAP/envStub.h -usr/src/lib/libkmsagent/common/SOAP/stdsoap2.cpp -usr/src/lib/libkmsagent/common/SOAP/stdsoap2.h -usr/src/lib/libkmsagent/common/SYSCommon.c -usr/src/lib/libkmsagent/common/SYSCommon.h -usr/src/lib/libkmsagent/common/debug.h -usr/src/lib/libkmsagent/common/ieee80211_crypto.c -usr/src/lib/libkmsagent/common/k_setupssl.c -usr/src/lib/libkmsagent/common/k_setupssl.h diff -r 776c3d9cae69 -r 739a180bd323 exception_lists/hdrchk --- a/exception_lists/hdrchk Sun Mar 11 22:00:47 2012 -0700 +++ b/exception_lists/hdrchk Thu Feb 02 20:16:51 2012 +1100 @@ -180,39 +180,3 @@ usr/src/uts/intel/sys/acpi/acstruct.h usr/src/uts/intel/sys/acpi/amlresrc.h usr/src/uts/intel/sys/acpi/platform/acwin64.h -usr/src/lib/libkmsagent/common/ApplianceParameters.h -usr/src/lib/libkmsagent/common/AutoMutex.h -usr/src/lib/libkmsagent/common/ClientSoapFaultCodes.h -usr/src/lib/libkmsagent/common/KMSAgent.h -usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.h -usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.h -usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.h -usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.h -usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.h -usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h -usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h -usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.h -usr/src/lib/libkmsagent/common/KMSAgentStorage.h -usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h -usr/src/lib/libkmsagent/common/KMSAgent_direct.h -usr/src/lib/libkmsagent/common/KMSAuditLogger.h -usr/src/lib/libkmsagent/common/KMSClientProfile.h -usr/src/lib/libkmsagent/common/KMSClientProfileImpl.h -usr/src/lib/libkmsagent/common/SOAP/KMSAgentWebServiceNamespaces.h -usr/src/lib/libkmsagent/common/SOAP/KMS_AgentH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_AgentStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_Agent_SOAP.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CAH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CAStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_Certificate_SOAP.h -usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryH.h -usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryStub.h -usr/src/lib/libkmsagent/common/SOAP/KMS_Discovery_SOAP.h -usr/src/lib/libkmsagent/common/SOAP/envH.h -usr/src/lib/libkmsagent/common/SOAP/envStub.h -usr/src/lib/libkmsagent/common/SOAP/stdsoap2.h -usr/src/lib/libkmsagent/common/SYSCommon.h -usr/src/lib/libkmsagent/common/debug.h -usr/src/lib/libkmsagent/common/k_setupssl.h diff -r 776c3d9cae69 -r 739a180bd323 exception_lists/packaging --- a/exception_lists/packaging Sun Mar 11 22:00:47 2012 -0700 +++ b/exception_lists/packaging Thu Feb 02 20:16:51 2012 +1100 @@ -59,9 +59,6 @@ usr/lib/llib-lsoftcrypto.ln usr/lib/amd64/llib-lsoftcrypto.ln i386 usr/lib/sparcv9/llib-lsoftcrypto.ln sparc -usr/lib/libkmsagent.so -usr/lib/amd64/libkmsagent.so i386 -usr/lib/sparcv9/libkmsagent.so sparc # # The following files are used by the DHCP service, the diff -r 776c3d9cae69 -r 739a180bd323 usr/src/cmd/cmd-crypto/Makefile --- a/usr/src/cmd/cmd-crypto/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ b/usr/src/cmd/cmd-crypto/Makefile Thu Feb 02 20:16:51 2012 +1100 @@ -29,7 +29,6 @@ digest \ elfsign \ kmfcfg \ - kmscfg \ pktool \ tpmadm diff -r 776c3d9cae69 -r 739a180bd323 usr/src/cmd/cmd-crypto/kmscfg/Makefile --- a/usr/src/cmd/cmd-crypto/kmscfg/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - -include $(SRC)/cmd/Makefile.cmd - -PROG= kmscfg - -.KEEP_STATE: - -all: $(PROG) - -install: all .WAIT $(ROOTPROG) - -_msg: $(PROG).po - -clean: - -$(ROOTBINPROG): $(PROG) - $(INS.file) - -lint: - -include $(SRC)/cmd/Makefile.targ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/cmd/cmd-crypto/kmscfg/kmscfg.pl --- a/usr/src/cmd/cmd-crypto/kmscfg/kmscfg.pl Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -#!/usr/perl5/bin/perl -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# -# This program initializes the private data needed to initialize -# the PKCS#11 KMS provider (/usr/lib/security/pkcs11_kms.so.1) in -# the Solaris Cryptographic Framework. -# -# It takes the following options: -# [-p Profile Name] -# [-a Agent ID] -# [-i Agent Address] -# [-t Transaction Timeout] -# [-f Failover Limit] -# [-d Discovery Frequency] -# [-?] -# - -use strict; -use warnings; -use locale; -use Getopt::Std; -use POSIX qw(locale_h); -use File::Basename; -use Sun::Solaris::Utils qw(textdomain gettext gmatch); - -my $cmd = basename($0); - -sub fatal { - print STDERR @_; - exit(1); -} - -sub usage { - print STDERR gettext("Usage:") . " $cmd\n" . - gettext( - "\t[-p[rofile] Profile Name] The name of the KMA profile to use.\n" . - "\t[-a[gent] Agent ID] The KMA agent ID.\n" . - "\t[-i[paddr] Agent Address] Address of the KMA\n" . - "\t[-t[imeout] Transaction Timeout] Transaction timeout period (integer)\n" . - "\t[-f[ailover] Failover Limit] Maximum failover limit (integer)\n" . - "\t[-d[iscovery] Discovery Freq] Frequency to attempt KMA discovery\n"); - exit(1); -} - -sub get_input { - my($prompt, $default) = @_; - my $resp; - if (length($default)) { - print "$prompt [$default]: "; - } else { - print "$prompt: "; - } - chop ($resp = ); - if (length($default)) { - return $resp ? $resp : $default; - } - return $resp; -} - -setlocale(LC_ALL, ""); -textdomain(TEXT_DOMAIN); - -my($profile, $agentid, $address, $timeout, $failover, $discovery, $help); - -my (%opt); -getopts('?p:a:i:t:f:d:', \%opt) || usage(); -usage() if exists ($opt{'?'}); - -my $TOKENDIR; - -if (exists($ENV{KMSTOKEN_DIR})) { - $TOKENDIR= $ENV{KMSTOKEN_DIR}; -} else { - my $name = getpwuid($<); - $TOKENDIR= "/var/kms/$name"; -} - -my $cfgfile = "$TOKENDIR/kmstoken.cfg"; - -if ( ! -d $TOKENDIR ) { - mkdir ($TOKENDIR, 0700) || die "mkdir $TOKENDIR error: $!\n"; -} - -if (-f $cfgfile) { - my $ans; - print gettext("KMS Token config file ") . "($cfgfile) " . - gettext("already exists,\n" . - "do you want to overwrite it (Y/n)? "); - chop ($ans = ); - if (length($ans)) { - if ($ans !~ /^[yY].*/) { - exit(0); - } - } -} - -if (!exists($opt{'p'})) { - $profile = get_input("Profile Name", ""); - if (!length($profile)) { - fatal(gettext("You must enter a KMA Profile Name.\n")); - } -} else { - $profile = $opt{'p'}; -} - -if (!exists($opt{'a'})) { - $agentid = get_input("Agent ID", ""); - if (!length($agentid)) { - fatal(gettext("You must enter a KMA Profile ID.\n")); - } -} else { - $agentid = $opt{'a'}; -} - -if (!exists($opt{'i'})) { - $address = get_input("KMA IP Address", ""); - if (!length($address)) { - fatal(gettext("You must enter a KMA IP Address.\n")); - } -} else { - $address = $opt{'i'}; -} - -if (!exists($opt{'t'})) { - $timeout = 10; -} else { - $timeout = $opt{'t'}; -} - -if (!exists($opt{'f'})) { - $failover = 3; -} else { - $failover = $opt{'f'}; -} - -if (!exists($opt{'d'})) { - $discovery = 10; -} else { - $discovery = $opt{'d'}; -} - -# Save the old one -if (-f $cfgfile) { - rename($cfgfile, "$cfgfile.old"); -} - -my $FH; - -open($FH, ">$cfgfile"); -print $FH "#\n# Profile Name\n#\n$profile\n"; -print $FH "#\n# Agent ID\n#\n$agentid\n"; -print $FH "#\n# KMA Address\n#\n$address\n"; -print $FH "#\n# Transaction Timeout\n#\n$timeout\n"; -print $FH "#\n# Failover Limit\n#\n$failover\n"; -print $FH "#\n# Discovery Frequency\n#\n$discovery\n"; -print $FH "#\n# Security Mode\n#\n1\n"; -close ($FH); - -exit(0); diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/Makefile --- a/usr/src/lib/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ b/usr/src/lib/Makefile Thu Feb 02 20:16:51 2012 +1100 @@ -112,7 +112,6 @@ libipmp \ libiscsit \ libkmf \ - libkmsagent \ libkstat \ libkvm \ liblm \ @@ -636,7 +635,7 @@ librestart: libuutil libscf ../cmd/sgs/libdl: ../cmd/sgs/libconv ../cmd/sgs/libelf: ../cmd/sgs/libconv -pkcs11: libcryptoutil libkmsagent +pkcs11: libcryptoutil print: libldap5 udapl/udapl_tavor: udapl/libdat libzfs: libdevid libgen libnvpair libuutil \ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/Makefile --- a/usr/src/lib/libkmsagent/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - -include $(SRC)/lib/Makefile.lib - -SUBDIRS= $(MACH) -$(BUILD64)SUBDIRS += $(MACH64) - -all := TARGET= all -check := TARGET= check -clean := TARGET= clean -clobber := TARGET= clobber -install := TARGET= install -lint := TARGET= lint - -.KEEP_STATE: - -all clean clobber install lint: $(SUBDIRS) - -$(SUBDIRS): FRC - @cd $@; pwd; $(MAKE) $(TARGET) - -FRC: diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/Makefile.com --- a/usr/src/lib/libkmsagent/Makefile.com Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - -LIBRARY= libkmsagent.a -VERS= .1 - -LIB_C_OBJECTS= \ - SYSCommon.o \ - ieee80211_crypto.o \ - k_setupssl.o - -LIB_CPP_OBJECTS= \ - KMSAgent.o \ - KMSAgentChallenge.o \ - KMSAgentCryptoUtilities.o \ - KMSAgentDataUnitCache.o \ - KMSAgentFatalState.o \ - KMSAgentKeyCallout.o \ - KMSAgentKnownAnswerTests.o \ - KMSAgentLoadBalancer.o \ - KMSAgentPKICert.o \ - KMSAgentPKICertOpenSSL.o \ - KMSAgentPKICommon.o \ - KMSAgentPKIKey.o \ - KMSAgentPKIKeyOpenSSL.o \ - KMSAgentSoapUtilities.o \ - KMSAgentStorage.o \ - KMSAgentStringUtilities.o \ - KMSAuditLogger.o \ - KMSClientProfile.o - -SOAP_OBJECTS =\ - AgentServiceNamespace.o \ - CAServiceNamespace.o \ - CertificateServiceNamespace.o \ - DiscoveryServiceNamespace.o \ - KMS_AgentC.o \ - KMS_AgentClient.o \ - KMS_CAC.o \ - KMS_CAClient.o \ - KMS_CertificateC.o \ - KMS_CertificateClient.o \ - KMS_DiscoveryC.o \ - KMS_DiscoveryClient.o \ - envC.o \ - stdsoap2.o - -OBJECTS= \ - $(LIB_C_OBJECTS) \ - $(LIB_CPP_OBJECTS) \ - $(SOAP_OBJECTS) - -LIBSRCDIR= ../common -SOAPSRCDIR= ../common/SOAP - -include $(SRC)/lib/Makefile.lib - -SRCDIR=../common -CSRCS = $(LIB_C_OBJECTS:%.o=$(LIBSRCDIR)/%.c) -LIBSRCS = $(LIB_CPP_OBJECTS:%.o=$(LIBSRCDIR)/%.cpp) $(CSRCS) -SOAPSRCS= $(SOAP_OBJECTS:%.o=$(SOAPSRCDIR)/%.cpp) - -CCOBJS = $(LIB_CPP_OBJECTS:%.o=pics/%.o) \ - $(SOAP_OBJECTS:%.o=pics/%.o) - -LIBS = $(DYNLIB) - -CCNEEDED = -lCstd -lCrun -$(__GNUC)CCNEEDED = -L$(SFWLIBDIR) -R$(SFWLIBDIR) -lstdc++ -lgcc_s - -LDLIBS += $(CCNEEDED) -lpam -lc -lsoftcrypto -lcrypto -lssl -lsocket -LDLIBS64 += $(CCNEEDED) -lpam -lc -lsoftcrypto -lcrypto -lssl -lsocket - -DEFINES = -DKMSUSERPKCS12 -D_REENTRANT -DNOWCSICMP -DUNIX \ - -DWITH_OPENSSL -DHAVE_OPENSSL_SSL_H \ - -DWITH_IPV6 -D_POSIX_THREADS -DXML_STATIC \ - -DHAVE_EXPAT_CONFIG_H -DK_SOLARIS_PLATFORM \ - -DOPENSSL_NO_DEPRECATED \ - -DKMS_AGENT_VERSION_STRING=\"KMSAgentLibraryVersion:Build1016\" - -CFLAGS += $(CCVERBOSE) - -# -# When building C++ objects, redefine CCFLAGS for 32-bit builds to -# use "compat=5" instead of "compat=4". -# The 64-bit CCFLAGS already use compat=5 option (see $SRC/Makefile.master) -# -$(CCOBJS) := i386_CCFLAGS = \ - -compat=5 \ - -Qoption ccfe -messages=no%anachronism \ - -Qoption ccfe -features=no%conststrings \ - $(CCERRWARN) - -$(CCOBJS) := sparc_CCFLAGS = \ - -cg92 -compat=5 \ - -Qoption ccfe -messages=no%anachronism \ - -Qoption ccfe -features=no%conststrings \ - $(CCERRWARN) - -CPPFLAGS += -I../common -I../common/SOAP -I$(SRC)/common/crypto/aes $(DEFINES) - -COPTFLAG += -xCC -COPTFLAG64 += -xCC - -pics/stdsoap2.o:= CPPFLAGS += -DWITH_NONAMESPACES - -ROOTLIBDIR= $(ROOT)/usr/lib -ROOTLIBDIR64= $(ROOT)/usr/lib/$(MACH64) - -.KEEP_STATE: - -all: $(LIBS) - -# -# Don't lint C++ code -# -lint: - -# -# Need special rules here because the files are named ".cpp" instead -# of ".cc". The source comes from KMS, and we need to keep them in sync -# so we won't change the naming convention. -# -pics/%.o: $(LIBSRCDIR)/%.cpp - $(COMPILE.cc) -o $@ $< - $(POST_PROCESS_O) - -pics/%.o: $(SOAPSRCDIR)/%.cpp - $(COMPILE.cc) -o $@ $< - $(POST_PROCESS_O) - -.cpp: - $(LINK.cc) -o $@ $< $(LDLIBS) - $(POST_PROCESS) - -.cpp.o: - $(COMPILE.cc) $(OUTPUT_OPTION) $< - $(POST_PROCESS_O) - -include $(SRC)/lib/Makefile.targ - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/THIRDPARTYLICENSE --- a/usr/src/lib/libkmsagent/THIRDPARTYLICENSE Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ --------------------------------------------------------------------------------- -gSOAP public license. - -The contents of this file are subject to the gSOAP Public License Version 1.3 -(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.cs.fsu.edu/~engelen/soaplicense.html -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the License. - -The Initial Developer of the Original Code is Robert A. van Engelen. -Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved. - --------------------------------------------------------------------------------- -The gSOAP Public License 1.3 is based on MPL1.1 (Mozilla Public License 1.1). - -The license allows for commercial and non-commercial use of gSOAP without fees or -royalties. It also allows products to be built on top and distributed under any -license (including commercial). Products developed with gSOAP should include a -notice of copyright and a disclaimer of warranty in the product's documentation -(License Exhibit B). - -The gSOAP public license requires modifications that are distributed as part of -an open source product based on gSOAP to be submitted back to us. - -Note that the wsdl2h tool, UDDI code, Web server, and sample applications are -NOT covered by the gSOAP public license. These are offered under a choice of -GPL or commercial licensing. - --------------------------------------------------------------------------------- -GPL license. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. - -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -Author contact information: -engelen@genivia.com / engelen@acm.org - -This program is released under the GPL with the additional exemption that -compiling, linking, and/or using OpenSSL is allowed. --------------------------------------------------------------------------------- diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/THIRDPARTYLICENSE.descrip --- a/usr/src/lib/libkmsagent/THIRDPARTYLICENSE.descrip Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -PORTIONS OF LIBKMSAGENT diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/amd64/Makefile --- a/usr/src/lib/libkmsagent/amd64/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com -include $(SRC)/lib/Makefile.lib.64 - -# -# CCNEEDED must be modified for 64-bit because the default only includes -# -lCrun -# -CCNEEDED = -lCstd -lCrun - -# -# If linking with gcc, we must fix the CCNEEDED and LDLIBS64 -# to get a clean link without duplicates. -# -$(__GNUC)CCNEEDED = -L$(SFWLIBDIR) -R$(SFWLIBDIR) -lstdc++ -lgcc_s -$(__GNUC)LDLIBS64 += $(CCNEEDED) - -install: all $(ROOTLIBS64) $(ROOTLINKS64) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/ApplianceParameters.h --- a/usr/src/lib/libkmsagent/common/ApplianceParameters.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,402 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*----------------------------------------------------------------------------- -* File: ApplianceParameters.h ------------------------------------------------------------------------------*/ - -#ifndef ApplianceParameters_h -#define ApplianceParameters_h - -// Server Config - -#define DEFAULT_SERVER_LOG_FILENAME "KeyMgrLog.log" -#define DEFAULT_SERVER_CONFIG_FILENAME "ServerConfig.cfg" -#define DEFAULT_CONNECTION_QUEUE_SIZE 100 -#define DEFAULT_THREAD_POOL_SIZE 8 -#define DEFAULT_THREAD_POOL_MIN_IDLE_THREADS 8 -#define DEFAULT_THREAD_POOL_MAX_IDLE_THREADS 8 -#define DEFAULT_THREAD_POOL_MAINTENANCE_FREQUENCY_IN_SECONDS 0 -#define DEFAULT_THREAD_POOL_SHRINK_BY 0 -#define DEFAULT_THREAD_POOL_SPAWN_BY 0 -#define DEFAULT_THREAD_POOL_ORIGINAL_SIZE 8 -#define DEFAULT_SOCKET_TIMEOUT_IN_SECONDS 60 -// former default for SSL_Accept timeout was 10s - increased to 20s to support HP LTO-4 -#define DEFAULT_SSL_ACCEPT_TIMEOUT_IN_SECONDS 20 -#define DEFAULT_SOCKET_CONNECTION_BACKLOG 100 -#define DEFAULT_MANAGEMENT_SERVICE_MAX_CONNECTIONS 10 -#define DEFAULT_CA_SERVICE_PORT_NUMBER 3331 -#define DEFAULT_CERTIFICATE_SERVICE_PORT_NUMBER 3332 -#define DEFAULT_MANAGEMENT_SERVICE_PORT_NUMBER 3333 -#define DEFAULT_AGENT_SERVICE_PORT_NUMBER 3334 -#define DEFAULT_DISCOVERY_SERVICE_PORT_NUMBER 3335 -#define DEFAULT_REPLICATION_SERVICE_PORT_NUMBER 3336 -#define EXTENDED_SSL_SESSION_CACHE_TIMEOUT 86400 -#define DEFAULT_DATABASE_MAINTENANCE_FREQUENCY_IN_SECONDS 86400 -#define DEFAULT_TRIGGER_DATABASE_MAINTENANCE_TIMEOUT_IN_SECONDS 30 -#define DEFAULT_AUDIT_LOG_MAINTENANCE_FREQUENCY_IN_SECONDS 3600 -// see CR 6689920 -#define DEFAULT_KEY_POOL_MAINTENANCE_FREQUENCY_IN_SECONDS 15 -#define KEY_POOL_MINIMUM_SIZE 1000 -#define KEY_POOL_MAXIMUM_SIZE 200000 -#define DEFAULT_KEY_GENERATION_BATCH_SIZE 10 -#define DEFAULT_REPLICATION_ANTI_ENTROPY_FREQUENCY_IN_SECONDS 60 -#define DEFAULT_MAXIMUM_REPLICATION_MESSAGE_SIZE_IN_BYTES 8192 -#define DEFAULT_MAXIMUM_JOIN_CLUSTER_MESSAGE_SIZE_IN_BYTES 262144 -#define DEFAULT_MAXIMUM_JOIN_CLUSTER_KMA_ENTRIES 20 -#define DEFAULT_REPLICATION_THROTTLE_TIME_IN_MILLISECONDS 1000 -#define DEFAULT_REPLICATION_SPREAD_TIME_IN_MILLISECONDS 3000 -#define DEFAULT_REPLICATION_TIMEOUT_IN_SECONDS 15 -#define DEFAULT_RETRIEVE_ROOT_CA_CERTIFICATE_TIMEOUT_IN_SECONDS 15 -#define DEFAULT_RETRIEVE_APPLIANCE_CERTIFICATE_TIMEOUT_IN_SECONDS 15 -#define DEFAULT_JOIN_CLUSTER_TIMEOUT_IN_SECONDS 15 -#define DEFAULT_JOIN_CLUSTER_REPLICATED_IN_SECONDS 10 -#define DEFAULT_REQUEST_ANTI_ENTROPY_PUSH_TIMEOUT_IN_SECONDS 60 -#define DEFAULT_PUSH_UPDATES_TIMEOUT_IN_SECONDS 60 -#define DEFAULT_CLUSTER_PEER_STATUS_TIMEOUT_IN_SECONDS 10 -#define DEFAULT_TABLE_LOCK_TIMEOUT_IN_SECONDS 2 -#define DEFAULT_REPLICATION_TABLE_LOCK_TIMEOUT_IN_SECONDS 8 -#define DEFAULT_TRANSACTION_RETRY_TIMEOUT_IN_SECONDS 4 -#define DEFAULT_KEY_STORE_GROW_SIZE_IN_SLOTS 10000 -// Since write-caching is disabled on the hard disk, this is not necessary to force overwrites to disk -#define DEFAULT_KEY_STORE_OVERWRITE_BUFFER_EXTRA_SIZE 0 -#define DEFAULT_KEY_STORE_OVERWRITE_PASS_COUNT 7 -#define DEFAULT_CLOCK_ADJUSTMENT_LIMIT_IN_SECONDS 300 -#define DEFAULT_DATABASE_START_TIMEOUT_IN_SECONDS 30 -#define DEFAULT_DATABASE_TRANSACTION_RETRY_COUNT 10 -#define DEFAULT_DATABASE_TRANSACTION_RETRY_SLEEP_IN_MILLISECONDS 1000 -#define DEFAULT_MAX_SNMP_TRAP_QUEUE_SIZE 10000 -#define DEFAULT_SNMP_TIMEOUT_IN_SECONDS 10 -#define DEFAULT_SNMP_RETRY_LIMIT 1 -#define DEFAULT_FILE_TRANSFER_MAXIMUM_CHUNK_SIZE_IN_KILOBYTES 1024 -#define DEFAULT_CERTIFICATE_START_TIME_SHIFT_IN_SECONDS (60*60*24) -#define DEFAULT_DISCOVERY_FREQUENCY_IN_SECONDS (60*10) -#define DEFAULT_AUDIT_LOG_FAIL_BACK_FREQUENCY_IN_SECONDS (60*10) -#define DEFAULT_NTP_PEER_UPDATE_FREQUENCY_IN_SECONDS 23 -#define DEFAULT_NTP_PEER_UPDATE_QUERY_INTERVAL 156 -#define DEFAULT_SYSTEM_DUMP_LOG_LINE_COUNT 5000 -#define DEFAULT_MASTER_KEY_PROVIDER_MAINTENANCE_FREQUENCY_IN_SECONDS 3600 -#define DEFAULT_SEND_PUSH_UPDATES_TO_JOIN_PEER_KMA_IN_SECONDS 3600 -#define DEFAULT_PENDING_QUORUM_OPERATION_EXPIRATION_FREQUENCY_IN_SECONDS 600 -#define DEFAULT_SUPPORT_ACCOUNT_MAX_PASSWORD_AGE_IN_DAYS 7 -#define DEFAULT_REPLICATION_ACCELERATION_TIMEOUT_IN_SECONDS 300 - -#define DEFAULT_DATABASE_ADMINISTRATOR_USERNAME "dbadmin" -#define DEFAULT_DATABASE_ADMINISTRATOR_PASSWORD "npwd4kms2" -#define DEFAULT_DATABASE_NAME "keymgr" -#define DEFAULT_DATABASE_PARAMS "" -#define DEFAULT_DATABASE_USERNAME "keymgr" -#define DEFAULT_DATABASE_PASSWORD "npwd4kms2" -#define DEFAULT_KEY_STORE_FILE_NAME "KeyStore.dat" -#define DEFAULT_OPENSSL_ROOT_CA_CERTIFICATE_FILE_NAME "RootCACertificate.crt" -#define DEFAULT_OPENSSL_APPLIANCE_KEY_PAIR_FILE_NAME "KMAKeyPair.pem" -#ifndef WIN32 -#define DEFAULT_OPENSSL_AGENT_PRIVATE_KEY_DIR "/var/opt/SUNWkms2/data/" -#endif - -#ifndef DEFAULT_SERVER_VERSION -#define DEFAULT_SERVER_VERSION "2.1.04" -#endif -#define DEFAULT_SNMP_TRAP_GENERIC_TRAP_OID "1.3.6.1.4.1.42.2" -#define DEFAULT_SNMP_TRAP_DATE_TIME_OID "1.3.6.1.4.1.42.2.1" -#define DEFAULT_SNMP_TRAP_AUDIT_CLASS_OID "1.3.6.1.4.1.42.2.2" -#define DEFAULT_SNMP_TRAP_AUDIT_OPERATION_OID "1.3.6.1.4.1.42.2.3" -#define DEFAULT_SNMP_TRAP_AUDIT_CONDITION_OID "1.3.6.1.4.1.42.2.4" -#define DEFAULT_SNMP_TRAP_AUDIT_SEVERITY_OID "1.3.6.1.4.1.42.2.5" -#define DEFAULT_SNMP_TRAP_ENTITY_ID_OID "1.3.6.1.4.1.42.2.6" -#define DEFAULT_SNMP_TRAP_NETWORK_ADDRESS_OID "1.3.6.1.4.1.42.2.7" -#define DEFAULT_SNMP_TRAP_MESSAGE_OID "1.3.6.1.4.1.42.2.8" -#define DEFAULT_SNMP_TRAP_AUDIT_SOLUTION_OID "1.3.6.1.4.1.42.2.9" -#define DEFAULT_BACKUP_FILE_NAME "BackupFile" -#define DEFAULT_RESTORE_FILE_NAME "RestoreFile" -#define DEFAULT_CACHED_BACKUP_FILE_NAME "/var/opt/SUNWkms2/CachedBackupFile" -#define DEFAULT_CACHED_CORE_SECURITY_XML_FILE_NAME "/var/opt/SUNWkms2/CachedCoreSecurityXMLFile" -#define DEFAULT_CACHED_BACKUP_KEY_XML_FILE_NAME "/var/opt/SUNWkms2/CachedBackupKeyXMLFile" -#define DEFAULT_SOFTWARE_UPGRADE_FILE_NAME "/SUNWkms2/boxcar/SoftwareUpgradeFile" -#define DEFAULT_IMPORT_10KEYS_FILE_NAME "Import10KeysFile" -#define DEFAULT_KEY_SHARING_EXPORT_FILE_NAME "KeySharingExport.dat" -#define DEFAULT_KEY_SHARING_IMPORT_FILE_NAME "KeySharingImport.dat" -#define DEFAULT_JOIN_PEER_KMA_FILE_NAME "/var/opt/SUNWkms2/data/JoinPeerKMAFile" - -#define DEFAULT_PRIMARY_NETWORK_IF "bge0" -#define DEFAULT_SECONDARY_NETWORK_IF "aggr1" -#define DEFAULT_AGGREGATE_NETWORK "nge1 nge0" -#define DEFAULT_PRIMARY_ALIAS "KMA-Mgmt" -#define DEFAULT_SECONDARY_ALIAS "KMA-Service" -#define DEFAULT_DATABASE_FILE_SYSTEM_PATH "/var/lib/pgsql" -#define DEFAULT_BUNDLE_SOFTWARE_COMMAND "/opt/SUNWkms2/bin/BundleSoftwareUpgrade" -#define DEFAULT_FLAR_FILE_PATH "/SUNWkms2/boxcar/SoftwareUpgrade.flar" - -// System Calls (Config) - -#define DEFAULT_SERVER_RESTART_COMMAND "/usr/sbin/svcadm restart kms2 > /dev/null 2>&1" -#define DEFAULT_SET_IP_CONFIGURATION_COMMAND "/opt/SUNWkms2/bin/SetIPAddresses" -#define DEFAULT_RESET_TO_FACTORY_DEFAULT_COMMAND "/opt/SUNWkms2/bin/ResetAndZeroizeLauncher > /dev/null 2>&1" -#define DEFAULT_RESET_TO_FACTORY_AND_ZEROIZE_DEFAULT_COMMAND "/opt/SUNWkms2/bin/ResetAndZeroizeLauncher -zeroize > /dev/null 2>&1" -#define DEFAULT_SHUTDOWN_COMMAND "/usr/sbin/shutdown -y -g 5 -i 5 'KMS is shutting down the system' > /dev/null 2>&1" -#define DEFAULT_ENABLE_SUPPORT_COMMAND "/bin/passwd -u support > /dev/null 2>&1" -#define DEFAULT_DISABLE_SUPPORT_COMMAND "/bin/passwd -l support > /dev/null 2>&1" -#define DEFAULT_REGENERATE_SSH_KEYS_COMMAND "/opt/SUNWkms2/bin/RegenerateSSHKeys > /dev/null 2>&1" -#define DEFAULT_DISPLAY_SSH_KEYS_COMMAND "/opt/SUNWkms2/bin/GetSSHKeys" -#define DEFAULT_ENABLE_SSH_COMMAND "/usr/sbin/svcadm enable ssh > /dev/null 2>&1" -#define DEFAULT_DISABLE_SSH_COMMAND "/opt/SUNWkms2/bin/DisableSSH > /dev/null 2>&1" -#define DEFAULT_GET_SUPPORT_STATUS_COMMAND "/opt/SUNWkms2/bin/StateOfSupport" -#define DEFAULT_GET_SSH_STATUS_COMMAND "/opt/SUNWkms2/bin/StateOfSSHD" -#define DEFAULT_ENABLE_SERVER_STARTUP_COMMAND "/bin/true" -#define DEFAULT_SERVER_STARTUP_COMMAND "/usr/sbin/svcadm enable kms2 > /dev/null 2>&1" -#define DEFAULT_SOFTWARE_UPGRADE_COMMAND "/opt/SUNWkms2/bin/InstallSoftwareVersion" -#define DEFAULT_LIST_SOFTWARE_VERSIONS_COMMAND "/opt/SUNWkms2/bin/ListSoftwareVersions" -#define DEFAULT_STOP_SOFTWARE_AND_RUN_COMMAND "echo Stop and run not implemented" // "/usr/local/bin/StopSoftwareAndRun" -#define DEFAULT_VERIFY_SOFTWARE_COMMAND "/opt/SUNWkms2/bin/VerifySoftwareFile" -#define DEFAULT_VERIFY_ACTIVATE_COMMAND "/opt/SUNWkms2/bin/VerifyActivateSoftware" -#define DEFAULT_CHANGE_SOFTWARE_COMMAND "/opt/SUNWkms2/bin/ChangeSoftwareVersion" -#define DEFAULT_REBOOT_SYSTEM_COMMAND "/usr/sbin/shutdown -y -g 5 -i 6 'KMS is rebooting the system' > /dev/null 2>&1" -#define DEFAULT_STOP_SERVER_COMMAND "/usr/sbin/svcadm disable kms2" -#define DEFAULT_INTERFACE_CONFIG_COMMAND "/usr/sbin/ifconfig" -#define DEFAULT_SYSTEM_DUMP_COMMAND "/opt/SUNWkms2/bin/SystemDump" -#define DEFAULT_CONFIGURE_NTP_COMMAND "/opt/SUNWkms2/bin/ConfigureNTP" -#define DEFAULT_SET_TIMEZONE_COMMAND "/opt/SUNWkms2/bin/SetTimezone" -#define DEFAULT_GET_KEYBOARD_LAYOUT_COMMAND "/opt/SUNWkms2/bin/GetKeyboardLayout" -#define DEFAULT_SET_KEYBOARD_LAYOUT_COMMAND "/opt/SUNWkms2/bin/SetKeyboardLayout" -#define DEFAULT_CONFIGURE_PRIMARY_ADMIN_COMMAND "/opt/SUNWkms2/bin/ConfigurePrimaryAdmin" -#define DEFAULT_GET_IPV6_ADDRESS_COMMAND "/opt/SUNWkms2/bin/GetIPv6Address" -#define DEFAULT_INITIALIZE_SCA6000_COMMAND "/opt/SUNWkms2/bin/InitializeSCA6000" -#define DEFAULT_QUERY_SYSTEM_MESSAGES_COMMAND "/opt/SUNWkms2/bin/QuerySystemMessages" - -// @see StringUtilities.cpp -#define DEFAULT_PENDING_QUORUM_OPERATION_TIMEOUT "P2D" // Default to 2 days (defined by ISO 8601) -#define PENDING_OPERATIONS_VERSION_STRING "2.2" - -// PKI - -#define KEY_SIZE 2048 -#define CRL_DAYS 365 -#define CRL_HOURS 0 -#define PKI_FORMAT FILE_FORMAT_PEM -#define DER_FORMAT FILE_FORMAT_DER -#define PKCS12_FORMAT FILE_FORMAT_PKCS12 -#define PKI_UNPROTECTED_PASSWORD "password" -#define DN_O_ROOT_CA "Oracle" -#define DN_OU_ROOT_CA "KMS" -#define DN_CN_ROOT_CA "RootCA" - // NOTE: Do not directly use the following values. - // Use the configurable Security Parameter values instead -#define DEFAULT_ROOT_CA_CERTIFICATE_LIFETIME "P49Y" -#define DEFAULT_CERTIFICATE_LIFETIME "P49Y" -#define AUTHENTICATION_SECRET_LENGTH 20 -#define AUTHENTICATION_CHALLENGE_LENGTH 20 -#define AUTHENTICATION_RESPONSE_LENGTH 20 -#define AUTHENTICATION_ITERATION_TIME_IN_MILLISECONDS 100 -// reduce the time for agents since we support agents on embedded processors -#define AGENT_AUTHENTICATION_ITERATION_TIME_IN_MILLISECONDS 10 -#define MIN_AUTHENTICATION_ITERATION_COUNT 40000 // a bit less than 1/10 second on standard Appliance hardware -#define MAX_AUTHENTICATION_ITERATION_COUNT 400000 // a bit less that 1 second on standard Appliance hardware - -// Core Security - -#define MAX_CORE_SECURITY_KEY_SPLIT_COUNT 10 -#define CORE_SECURITY_HMAC_LENGTH 64 -#define MAX_CORE_SECURITY_PAD_LENGTH 16 - -//------------- to be removed: Transfer Partner code is obsolete ----------- -#define MAX_KEY_DISTRIBUTION_PUBLIC_KEY_COUNT 4 -#define MAX_CORE_SECURITY_PUBLIC_KEY_LENGTH 256 -//-------------------------------------------------------------------------- - -// SOAP Services - -// TODO: make functions instead of macros? - -#define SOAP_SERVER_ERROR( pstSoap ) (soap_receiver_fault( pstSoap, "Server Error", NULL )) -// This has been replaced with SoapClientError: -//#define SOAP_CLIENT_ERROR( pstSoap, sMessage ) (soap_sender_fault( pstSoap, sMessage, NULL )) -#define SOAP_IS_CLIENT_ERROR( pstSoap ) (strcmp( *soap_faultcode( pstSoap ), pstSoap->version == 2 ? "SOAP-ENV:Sender" : "SOAP-ENV:Client" ) == 0) -#define GET_SOAP_FAULTCODE( pstSoap ) ((soap_set_fault( pstSoap ),*soap_faultcode( pstSoap )) ? (*soap_faultcode( pstSoap )) : "Unknown") -#define GET_SOAP_FAULTSTRING( pstSoap ) ((soap_set_fault( pstSoap ),*soap_faultstring( pstSoap )) ? (*soap_faultstring( pstSoap )) : "Unknown") -#define GET_SOAP_FAULTDETAIL( pstSoap ) ((soap_set_fault( pstSoap ),*soap_faultdetail( pstSoap )) ? (*soap_faultdetail( pstSoap )) : "Unknown") -#define SOAP_AUDIT_LOG_MESSAGE( pStringTable, pstSoap ) ( CAuditMessage( CAuditLogger::AUDIT_VALUE_SOAP_FAULTCODE, GET_SOAP_FAULTCODE( pstSoap ) ) + CAuditMessage( CAuditLogger::AUDIT_VALUE_SOAP_FAULTSTRING, GET_SOAP_FAULTSTRING( pstSoap ) ) + CAuditMessage( CAuditLogger::AUDIT_VALUE_SOAP_FAULTDETAIL, GET_SOAP_FAULTDETAIL( pstSoap ) ) ) -#define SOAP_HTTP_PROTOCOL "http://" -#define SOAP_HTTPS_PROTOCOL "https://" - -// Data Entry - -#define MINIMUM_WIDE_STRING_VALUE_LENGTH 1 -#define MAXIMUM_WIDE_STRING_VALUE_LENGTH 64 -#define MAXIMUM_UTF8_STRING_VALUE_LENGTH ( MAXIMUM_WIDE_STRING_VALUE_LENGTH * 6 ) -#define MINIMUM_WIDE_TEXT_VALUE_LENGTH 1 -#define MAXIMUM_WIDE_TEXT_VALUE_LENGTH 8192 -#define MAXIMUM_UTF8_TEXT_VALUE_LENGTH ( MAXIMUM_WIDE_TEXT_VALUE_LENGTH * 6 ) - -// Business Logic - -#define AUDIT_ID_BUFFER_LENGTH 16 -#define CERTIFICATE_SERIAL_NUMBER_BUFFER_LENGTH 16 -#define BACKUP_ID_BUFFER_LENGTH 16 -#define DATA_UNIT_ID_HEX_STRING_LENGTH 32 -#define DATA_UNIT_KEY_ID_BUFFER_LENGTH 30 -#define DATA_UNIT_KEY_ID_HEX_STRING_LENGTH (DATA_UNIT_KEY_ID_BUFFER_LENGTH*2) -#define MAXIMUM_QUERY_NEXT_PAGE_SIZE 1000 -#define MAXIMUM_QUERY_FILTER_PARAMS_COUNT 100 -#define MAXIMUM_LIST_DATA_UNIT_STATUS_PARAMS_COUNT ( MAXIMUM_QUERY_FILTER_PARAMS_COUNT ) -#define MAXIMUM_LIST_AUDIT_LOGS_FOR_AGENTS_PARAMS_COUNT ( MAXIMUM_QUERY_FILTER_PARAMS_COUNT ) -#define MAXIMUM_LIST_AUDIT_LOGS_FOR_DATA_UNITS_PARAMS_COUNT ( MAXIMUM_QUERY_FILTER_PARAMS_COUNT ) -#define MAXIMUM_LIST_AUDIT_LOGS_FOR_KEYS_PARAMS_COUNT ( MAXIMUM_QUERY_FILTER_PARAMS_COUNT ) -// 0 allows unlimited # of DUs to be exported, positive int constricts the size -#define DEFAULT_KEYSHARING_MAXIMUM_EXPORT_DATA_UNITS_RESULT_SIZE 0 -#define TRANSFER_PARTNER_KEY_ID_LENGTH 32 -#define TRANSFER_PARTNER_KEY_VALUE_LENGTH 259 -#define TRANSFER_PARTNER_KEY_VALUE_HEX_STRING_LENGTH (TRANSFER_PARTNER_KEY_VALUE_LENGTH*2) - // NOTE: Do not directly use the following value. - // Use the configurable Security Parameter value instead -#define DEFAULT_MAX_FAILED_RETRIEVE_CERTIFICATE_ATTEMPTS 5 - // The obvious logic for determining if a key's bits are on a backup is as follows: - // The key must have been created before the backup was created: - // Backup.CreatedDate >= DataUnitKey.CreatedDate - // And the key must not have been destroyed before the backup was created: - // (DataUnitKey.DestroyedDate IS NULL) OR (Backup.CreatedDate <= DataUnitKey.DestroyedDate) - // This logic would be fine in a single-appliance cluster, or if we had (or when we have) - // time synchronization. But right now the appliances in a cluster may have different - // times from each other, and that makes it dangerous to use a simple date comparison. - // (Note that when determining if a key is on a backup, we *really* don't want false - // negatives, but we don't mind false positives so much, within reason.) - // To address this, the best solution we came up with is to use a "backup date window". - // Instead of simply using the CreatedDate of a backup in our logic, we'll use: - // (Backup.CreatedDate + BACKUP_DATE_WINDOW_INTERVAL) >= DataUnitKey.CreatedDate - // and - // (DataUnitKey.DestroyedDate IS NULL) OR ((Backup.CreatedDate - BACKUP_DATE_WINDOW_INTERVAL) <= DataUnitKey.DestroyedDate) - // Note that the adding and subtracting of BACKUP_DATE_WINDOW_INTERVAL effectively increases - // the chance that the calculation will show that a key's bits are on a backup. - // It's still possible to get false negatives, and there will be more false positives, - // but if BACKUP_DATE_WINDOW_INTERVAL is set to the largest reasonable value that - // appliances' clocks could differ by, then we can eliminate false negatives to a - // fairly high degree of probability. (We can raise the probability to any arbitrary - // amount by increasing the window, but the trade-off is that we'll have more and more - // false positives.) -#define DEFAULT_BACKUP_DATE_WINDOW_IN_SECONDS 300 - -// Security Parameter Constraints - -#define MINIMUM_LONG_TERM_RETENTION_AUDIT_LOG_SIZE_LIMIT 1000 -#define MAXIMUM_LONG_TERM_RETENTION_AUDIT_LOG_SIZE_LIMIT 1000000 -#define MINIMUM_LONG_TERM_RETENTION_AUDIT_LOG_LIFETIME "P7D" -#define MINIMUM_MEDIUM_TERM_RETENTION_AUDIT_LOG_SIZE_LIMIT 1000 -#define MAXIMUM_MEDIUM_TERM_RETENTION_AUDIT_LOG_SIZE_LIMIT 1000000 -#define MINIMUM_MEDIUM_TERM_RETENTION_AUDIT_LOG_LIFETIME "P7D" -#define MINIMUM_SHORT_TERM_RETENTION_AUDIT_LOG_SIZE_LIMIT 1000 -#define MAXIMUM_SHORT_TERM_RETENTION_AUDIT_LOG_SIZE_LIMIT 1000000 -#define MINIMUM_SHORT_TERM_RETENTION_AUDIT_LOG_LIFETIME "P7D" -#define MINIMUM_AUDIT_LOG_MAINTENANCE_FREQUENCY "PT1M" -#define MINIMUM_ROOT_CA_CERTIFICATE_LIFETIME "P1M" -#define MINIMUM_CERTIFICATE_LIFETIME "P1M" -#define MINIMUM_RETRIEVE_CERTIFICATE_ATTEMPT_LIMIT 1 -#define MAXIMUM_RETRIEVE_CERTIFICATE_ATTEMPT_LIMIT 1000 -#define MINIMUM_PASSPHRASE_MINIMUM_LENGTH 8 -#define MAXIMUM_PASSPHRASE_MINIMUM_LENGTH ( MAXIMUM_WIDE_STRING_VALUE_LENGTH ) -#define MINIMUM_MANAGEMENT_SESSION_TIMEOUT_IN_MINUTES 0 -#define MAXIMUM_MANAGEMENT_SESSION_TIMEOUT_IN_MINUTES 60 - -// The SYSTEM_FIPS_MODE_ONLY_ values must match those in -// enum KMS_Management__FIPSModeOnly in KMS_Management_SOAP.h and -// enum KMSManagement_FIPSModeOnly in KMSManagement.h -#define SYSTEM_FIPS_MODE_ONLY_UNCHANGED (-1) -#define SYSTEM_FIPS_MODE_ONLY_FALSE 0 -#define SYSTEM_FIPS_MODE_ONLY_TRUE 1 -#define MINIMUM_FIPS_MODE_ONLY ( SYSTEM_FIPS_MODE_ONLY_FALSE ) -#define MAXIMUM_FIPS_MODE_ONLY ( SYSTEM_FIPS_MODE_ONLY_TRUE ) - -#define DEFAULT_MINIMUM_PASSPHRASE_LENGTH 8 -#define DEFAULT_MANAGEMENT_SESSION_TIMEOUT_IN_MINUTES 15 -#define DEFAULT_FIPS_MODE_ONLY ( SYSTEM_FIPS_MODE_ONLY_FALSE ) - -// To limit maximum query size, we limit # created -// this is probably (hopefully) temporary -#define MAXIMUM_CREATION_COUNT 999 - -// Audit Log - -#define AUDIT_LOG_DEFAULT_SIZE_LONG_TERM_RETENTION 1000000 -#define AUDIT_LOG_DEFAULT_SIZE_MEDIUM_TERM_RETENTION 100000 -#define AUDIT_LOG_DEFAULT_SIZE_SHORT_TERM_RETENTION 10000 -#define AUDIT_LOG_DEFAULT_LIFETIME_DAYS_LONG_TERM_RETENTION "P2Y" -#define AUDIT_LOG_DEFAULT_LIFETIME_DAYS_MEDIUM_TERM_RETENTION "P3M" -#define AUDIT_LOG_DEFAULT_LIFETIME_DAYS_SHORT_TERM_RETENTION "P7D" - -// Replication - -// schema version 7: change to soap Discovery Service for supporting DNS -// schema version 8: change to soap Agent Service for RetrieveDataUnitKeys -// schema version 9: ensure that Ready keys appear in current backup -// schema version 10: IPv6 support and AES key wrap -// schema version 11: ICSF integration, distributed quorum, SNMP v2 -// schema version 12: replication acceleration -#define REPLICATION_SCHEMA_VERSION_MIN 8 -#define REPLICATION_SCHEMA_VERSION_MAX 12 -#define REPLICATION_SCHEMA_VERSION_KEYS_IN_BACKUP 9 -#define REPLICATION_SCHEMA_VERSION_IPV6_ADDRESSES 10 -#define REPLICATION_SCHEMA_VERSION_AES_KEY_WRAP 10 -#define REPLICATION_SCHEMA_VERSION_MASTER_KEY_MODE 11 -#define REPLICATION_SCHEMA_VERSION_DISTRIBUTED_QUORUM 11 -#define REPLICATION_SCHEMA_VERSION_SNMP_PROTOCOL_VERSION_TWO 11 -#define REPLICATION_SCHEMA_VERSION_REPLICATION_ACCELERATION 12 -// value to return on inactive software versions -#define REPLICATION_SCHEMA_VERSION_INVALID 0 - -// Key Sharing Transfer Formats - -#define TRANSFER_FORMAT_INVALID (-100) -#define TRANSFER_FORMAT_DEFAULT (-1) -#define TRANSFER_FORMAT_LEGACY 0 -#define TRANSFER_FORMAT_LEGACY_VERSION_STRING "2.0.1" -#define TRANSFER_FORMAT_FIPS 1 -#define TRANSFER_FORMAT_FIPS_VERSION_STRING "2.1" - -// Master Key Modes -#define _MASTER_KEY_MODE_OFF 0 -#define _MASTER_KEY_MODE_ALL_KEYS 1 -#define _MASTER_KEY_MODE_RECOVER_KEYS_ONLY 2 - -// Derived/Master Key stuff -#define KEY_VERSION_PREFIX_LENGTH 2 -#define KEY_VERSION_PREFIX_HEX_LENGTH (KEY_VERSION_PREFIX_LENGTH*2) -#define NON_DERIVED_KEY_VERSION 0x0000 -#define NON_DERIVED_KEY_VERSION_HEX (L"0000") -#define DERIVED_KEY_VERSION 0x0001 -#define DERIVED_KEY_VERSION_HEX (L"0001") -#define MASTER_KEY_ID_PREFIX_HEX (L"0000") -#define MASTER_KEY_ID_PREFIX_LENGTH 2 -#define MASTER_KEY_ID_PREFIX_HEX_LENGTH (MASTER_KEY_ID_PREFIX_LENGTH*2) -#define MASTER_KEY_ID_KMAID_LENGTH 8 -#define MASTER_KEY_ID_KMAID_HEX_LENGTH (MASTER_KEY_ID_KMAID_LENGTH*2) -#define MASTER_KEY_ID_RANDOM_LENGTH 8 -#define MASTER_KEY_ID_LENGTH (MASTER_KEY_ID_PREFIX_LENGTH + MASTER_KEY_ID_KMAID_LENGTH + MASTER_KEY_ID_RANDOM_LENGTH) -#define MASTER_KEY_ID_HEX_LENGTH (MASTER_KEY_ID_LENGTH*2) // ICSF can only handle 32-byte string IDs for keys -#define MASTER_KEY_ID_BASE64_LENGTH 32 -#define DATA_UNIT_KEY_ID_HEX_LENGTH (DATA_UNIT_KEY_ID_BUFFER_LENGTH*2) - -// SNMP Manager protocol version stuff -#define SYSTEM_SNMP_PROTOCOL_VERSION_THREE 0 -#define SYSTEM_SNMP_PROTOCOL_VERSION_TWO 1 - -#endif //ApplianceParameters_h diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/AutoMutex.h --- a/usr/src/lib/libkmsagent/common/AutoMutex.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*------------------------------------------------------------------------------ - * Module : AutoMutex.h - -----------------------------------------------------------------------------*/ - -#ifndef AutoMutex_h -#define AutoMutex_h - -#include "SYSCommon.h" - -class CAutoMutex -{ -public: - - /*--------------------------------------------------------------------------- - * Constructor: - * Locks the given mutex handle. - * - * Input - * ----- - * i_hMutex Mutex handle - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ - - CAutoMutex( K_MUTEX_HANDLE i_hMutex ) - : m_hMutex( 0 ), - m_bLocked( false ) - { - if ( i_hMutex ) - { - Lock( i_hMutex ); - } - } - - - /*--------------------------------------------------------------------------- - * Destructor: - * Unlocks this mutex. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ - - virtual ~CAutoMutex() - { - if ( m_bLocked ) - { - Unlock(); - } - } - - /*--------------------------------------------------------------------------- - * Function: Lock - * - * Description: - * Locks this mutex handle. If i_hMutex is null, the handle passed to the - * constructor will be used. Fatals if there is no valid handle. - * - * Input - * ----- - * i_hMutex Mutex handle to lock - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ - - void Lock( K_MUTEX_HANDLE i_hMutex = 0 ) - { - FATAL_ASSERT( !m_bLocked ); - - if ( i_hMutex ) - { - m_hMutex = i_hMutex; - } - - FATAL_ASSERT( m_hMutex ); - K_LockMutex( m_hMutex ); - m_bLocked = true; - } - - - /*--------------------------------------------------------------------------- - * Function: Unlock - * - * Description: - * Unlocks the mutex handle passed to the constructor or to a previous - * Lock call. Fatals if the mutex is not locked. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ - - void Unlock() - { - FATAL_ASSERT( m_bLocked ); - FATAL_ASSERT( m_hMutex ); - K_UnlockMutex( m_hMutex ); - m_bLocked = false; - } - -private: - K_MUTEX_HANDLE m_hMutex; - bool m_bLocked; -}; - - -#endif // AutoMutex_h diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/ClientSoapFaultCodes.h --- a/usr/src/lib/libkmsagent/common/ClientSoapFaultCodes.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef CLIENTSOAPFAULTCODES_H -#define CLIENTSOAPFAULTCODES_H - -/** - * Enumeration of error codes that have corresponding soap error strings. - * Note: These start at 1000 to avoid overlapping with other soap error codes - * - * The format of these enumerations is roughly as follows: - * - * Start with CLIENT_ERROR_ - * - * Next, put AGENT if the error is intended for the KMA Agent interface - * put MANAGER if the error is intended for the KMS Manager interface - * put SERVER if the error is the fault of the KMS server for any interface - * - * After that, briefly describe the error. - */ -enum SoapClientErrorCode -{ - INVALID_CLIENT_ERROR = 0, - CLIENT_ERROR_ACCESS_DENIED = 1000, - CLIENT_ERROR_SERVER_BUSY, - CLIENT_ERROR_AUTHENTICATION_FAILED, - CLIENT_ERROR_NETWORK_ADDRESS_UNREACHABLE, - CLIENT_ERROR_INVALID_EXPECTED_PEER_LAST_KNOWN_TIMESTAMP_VECTOR, - CLIENT_ERROR_INCOMPATIBLE_VERSION, - CLIENT_ERROR_INCOMPATIBLE, - CLIENT_ERROR_BUNDLE_ALREADY_IN_PROGRESS, - CLIENT_ERROR_AGENT_INVALID_PARAMETERS, - CLIENT_ERROR_AGENT_KEY_DOES_NOT_EXIST, - CLIENT_ERROR_AGENT_KEY_DESTROYED, - CLIENT_ERROR_AGENT_DATA_UNIT_ID_NOT_FOUND_EXTERNAL_ID_EXISTS, - CLIENT_ERROR_AGENT_DATA_UNIT_EXPIRED, - CLIENT_ERROR_INVALID_DATA_UNIT_ID, - CLIENT_ERROR_INVALID_KEY_ID, - CLIENT_ERROR_AGENT_DUPLICATE_EXTERNAL_ID, - CLIENT_ERROR_AGENT_INVALID_EXTERNAL_ID, - CLIENT_ERROR_AGENT_DATA_UNIT_NOT_REKEYABLE, - CLIENT_ERROR_AGENT_APPLIANCE_LOCKED, - CLIENT_ERROR_AGENT_INVALID_PASSPHRASE, - CLIENT_ERROR_DATA_UNIT_NOT_FOUND, - CLIENT_ERROR_AGENT_NO_READY_KEYS, - CLIENT_ERROR_MANAGER_INVALID_PARAMETERS, - CLIENT_ERROR_MANAGER_DATA_UNIT_NOT_DESTROYED, - CLIENT_ERROR_MANAGER_APPLIANCE_EXISTS, - CLIENT_ERROR_MANAGER_APPLIANCE_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_CANNOT_DELETE_LOCAL_APPLIANCE, - CLIENT_ERROR_MANAGER_APPLIANCE_IN_USE, - CLIENT_ERROR_MANAGER_AGENT_EXISTS, - CLIENT_ERROR_MANAGER_AGENT_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_AGENT_IN_USE, - CLIENT_ERROR_MANAGER_USER_EXISTS, - CLIENT_ERROR_MANAGER_USER_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_USER_IN_USE, - CLIENT_ERROR_MANAGER_ROLE_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_USER_ROLE_EXISTS, - CLIENT_ERROR_MANAGER_USER_ROLE_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_CANNOT_DELETE_ONLY_SECURITY_OFFICER, - CLIENT_ERROR_MANAGER_CANNOT_REMOVE_ONLY_SECURITY_OFFICER_ROLE, - CLIENT_ERROR_MANAGER_SITE_EXISTS, - CLIENT_ERROR_MANAGER_SITE_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_SITE_IN_USE, - CLIENT_ERROR_MANAGER_CANNOT_SET_PASSPHRASE_FOR_LOCAL_APPLIANCE, - CLIENT_ERROR_MANAGER_INVALID_PASSPHRASE, - CLIENT_ERROR_MANAGER_LIFETIME_OVERRIDE_NOT_PERMITTED, - CLIENT_ERROR_MANAGER_AGENT_ALREADY_IN_KEY_GROUP, - CLIENT_ERROR_MANAGER_AGENT_ALREADY_HAS_DEFAULT_KEY_GROUP, - CLIENT_ERROR_MANAGER_AGENT_NOT_IN_KEY_GROUP, - CLIENT_ERROR_MANAGER_CORE_SECURITY_ALREADY_LOCKED, - CLIENT_ERROR_MANAGER_CORE_SECURITY_ALREADY_UNLOCKED, - CLIENT_ERROR_MANAGER_BACKUP_ID_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_BACKUP_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_BACKUP_RESTORE_DENIED, - CLIENT_ERROR_MANAGER_BACKUP_OR_RESTORE_IN_PROGRESS, - CLIENT_ERROR_MANAGER_BACKUP_RESTORE_FILE_DUPLICATE_ENTITY_FAILURE, - CLIENT_ERROR_MANAGER_BACKUP_RESTORE_FILE_INVALID, - CLIENT_ERROR_MANAGER_FILE_CHUNK_OFFSET_INVALID, - CLIENT_ERROR_MANAGER_FILE_CHUNK_IO_ERROR, - CLIENT_ERROR_MANAGER_BACKUP_ALREADY_DESTROYED, - CLIENT_ERROR_MANAGER_BACKUP_DESTROYED, - CLIENT_ERROR_MANAGER_BACKUP_NOT_AVAILABLE, - CLIENT_ERROR_MANAGER_CLOCK_ADJUSTMENT_LIMIT_EXCEEDED, - CLIENT_ERROR_MANAGER_CLOCK_ADJUSTMENT_ALREADY_PERFORMED_TODAY, - CLIENT_ERROR_MANAGER_CLOCK_ADJUSTMENT_FAILED, - CLIENT_ERROR_MANAGER_SOFTWARE_UPGRADE_FILE_NOT_FOUND, - CLIENT_ERROR_MANAGER_SOFTWARE_UPGRADE_FAILED, - CLIENT_ERROR_MANAGER_LIST_SOFTWARE_VERSIONS_FAILED, - CLIENT_ERROR_MANAGER_CHANGE_SOFTWARE_VERSION_FAILED, - CLIENT_ERROR_MANAGER_VERIFY_SOFTWARE_UPLOAD_FAILED, - CLIENT_ERROR_MANAGER_SNMP_MANAGER_EXISTS, - CLIENT_ERROR_MANAGER_SNMP_MANAGER_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_EXISTS, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_IN_USE, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_ALREADY_IN_KEY_GROUP, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_NOT_IN_KEY_GROUP, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_NOT_ENABLED, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_NOT_ALLOWED_EXPORT_TO, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_HAS_NO_PUBLIC_KEYS, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_PUBLIC_KEY_ID_ALREADY_EXISTS, - CLIENT_ERROR_MANAGER_APPLIANCE_LOCKED, - CLIENT_ERROR_MANAGER_DATA_UNIT_EXPIRED, - CLIENT_ERROR_MANAGER_UNEXPECTED_TRANSFER_PARTNER, - CLIENT_ERROR_MANAGER_KEY_GROUP_DOES_NOT_ALLOW_EXPORT_FROM, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_KEY_GROUP_ACCESS_DENIED, - CLIENT_ERROR_MANAGER_TRANSFER_PARTNER_NOT_ALLOWED_IMPORT_FROM, - CLIENT_ERROR_MANAGER_KEY_GROUP_NOT_ALLOWED_IMPORT_TO, - CLIENT_ERROR_MANAGER_DUPLICATE_DATA_UNIT_ID, - CLIENT_ERROR_MANAGER_DUPLICATE_DATA_UNIT_KEY_ID, - CLIENT_ERROR_MANAGER_DUPLICATE_EXTERNAL_ID, - CLIENT_ERROR_MANAGER_CORE_SECURITY_PUBLIC_KEY_NOT_FOUND, - CLIENT_ERROR_MANAGER_CHANGE_PRIMARY_LOCAL_NETWORK_ADDRESS_DENIED, - CLIENT_ERROR_MANAGER_CHANGE_SECONDARY_LOCAL_NETWORK_ADDRESS_DENIED, - CLIENT_ERROR_MANAGER_KEY_POLICY_EXISTS, - CLIENT_ERROR_MANAGER_KEY_POLICY_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_KEY_POLICY_IN_USE, - CLIENT_ERROR_MANAGER_CHANGE_SOFTWARE_VERSION_IN_PROGRESS, - CLIENT_ERROR_MANAGER_VERIFY_SOFTWARE_UPLOAD_IN_PROGRESS, - CLIENT_ERROR_MANAGER_APPLY_SOFTWARE_VERSION_IN_PROGRESS, - CLIENT_ERROR_MANAGER_KEY_GROUP_EXISTS, - CLIENT_ERROR_MANAGER_KEY_GROUP_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_KEY_GROUP_IN_USE, - CLIENT_ERROR_MANAGER_KEY_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_KEY_ALREADY_COMPROMISED, - CLIENT_ERROR_MANAGER_KEY_ALREADY_IN_KEY_GROUP, - CLIENT_ERROR_MANAGER_INVALID_BACKUP_ID, - CLIENT_ERROR_MANAGER_LIMIT_EXCEEDED, - CLIENT_ERROR_MANAGER_SYSTEM_DUMP_FAILED, - CLIENT_ERROR_MANAGER_SYSTEM_DUMP_DOES_NOT_EXIST, - CLIENT_ERROR_MANAGER_ADD_NTP_SERVER_FAILED, - CLIENT_ERROR_MANAGER_DELETE_NTP_SERVER_FAILED, - CLIENT_ERROR_MANAGER_NTP_SERVER_SPECIFIED, - CLIENT_ERROR_MANAGER_GET_LOCAL_CLOCK_FAILED, - CLIENT_ERROR_MANAGER_ADJUST_LOCAL_CLOCK_FAILED, - CLIENT_ERROR_MANAGER_NEED_CORE_SECURITY_BACKUP, - CLIENT_ERROR_MANAGER_KEY_DESTRUCTION_IN_PROGRESS, - CLIENT_ERROR_IMPORT_10KEYS_ALREADY_UPLOADED, - CLIENT_ERROR_IMPORT_10KEYS_FILE_DOES_NOT_EXIST, - CLIENT_ERROR_IMPORT_10KEYS_INVALID_FILE_FORMAT, - CLIENT_ERROR_IMPORT_10KEYS_FILE_READ_ERROR, - CLIENT_ERROR_IMPORT_10KEYS_FAILED, - CLIENT_ERROR_IMPORT_10KEYS_DUPLICATE_KEY_ID_AND_VALUE, - CLIENT_ERROR_IMPORT_10KEYS_DUPLICATE_KEY_ID, - CLIENT_ERROR_IMPORT_10KEYS_KEY_VALUE_NOT_HEX, - CLIENT_ERROR_INVALID_BACKUP_TIME, - CLIENT_ERROR_KEY_TRANSFER_IN_PROGRESS, - CLIENT_ERROR_KEY_TRANSFER_FILE_NOT_VALIDATED, - CLIENT_ERROR_LOCAL_APPLIANCE_NOT_PEER_SERVER, - CLIENT_ERROR_CANNOT_CONTACT_PEER_SERVER, - CLIENT_ERROR_MISMATCHED_SIGNING_PUBLIC_KEY_ID, - CLIENT_ERROR_MISMATCHED_ENCRYPTION_PUBLIC_KEY_ID, - CLIENT_ERROR_DATA_UNIT_HAS_NO_EXPORTABLE_KEYS, - CLIENT_ERROR_SOME_KEYS_NOT_EXPORTABLE, // This is actually a warning -- should we treat it differently? Start at 2000? - CLIENT_ERROR_UPDATE_REPLICATION_SCHEMA, - CLIENT_ERROR_NOT_SUPPORTED, - CLIENT_ERROR_AGENT_KWK_NOT_REGISTERED, - CLIENT_ERROR_AGENT_KWK_ID_MISMATCH, - CLIENT_ERROR_LIST_KMA_NETWORK_ADDRESSES_FAILED, - CLIENT_ERROR_GET_KMA_DNS_INFORMATION_FAILED, - CLIENT_ERROR_LIST_KMA_ROUTING_TABLE_ENTRIES_FAILED, - CLIENT_ERROR_EXPORT_FORMAT_DISALLOWED, - CLIENT_ERROR_TRANSFER_FORMAT_DISALLOWED, - CLIENT_ERROR_FIPS_MODE_REQUIRED, - CLIENT_ERROR_CLIENT_UPGRADE_REQUIRED, - CLIENT_ERROR_RESTORE_INVALID_BACKUP_XML_FORMAT, - CLIENT_ERROR_MANAGER_INVALID_MASTER_KEY_PROVIDER_PARAMETERS, - CLIENT_ERROR_MANAGER_PENDED_OPERATION_ID_DOES_NOT_EXIST, - CLIENT_ERROR_INVALID_PENDED_OPERATION_TYPE, - CLIENT_ERROR_SERVER_HSM_REQUIRED_BUT_MISSING, - CLIENT_ERROR_MANAGER_INTERNAL, - CLIENT_ERROR_AGENT_INVALID_HMAC, - CLIENT_ERROR_AGENT_INVALID_KEY, - CLIENT_ERROR_QUORUM_NOT_MET, - CLIENT_ERROR_MANAGER_CANNOT_QUERY_NTP_SERVER, - CLIENT_ERROR_MANAGER_NTP_SERVER_DELTA_TOO_BIG, - CLIENT_ERROR_MANAGER_CANNOT_UPDATE_NTP_CONFIG, - CLIENT_ERROR_MANAGER_CANNOT_CONTACT_SNMP_MANAGER, - CLIENT_ERROR_MANAGER_CORE_SECURITY_ERROR_INTERNAL, - CLIENT_ERROR_MANAGER_CORE_SECURITY_NOT_FOUND, - - // NOTE: When you add a new CLIENT_ERROR_* definition above this comment, - // you should also add: - // - // 1) A case statement for it near the end of the switch - // statement in the GetSoapClientErrorCodeMessage() routine - // in the Common/SoapFaults/ClientSoapFaults.cpp file - // 2) A case statement for it near the end of the switch - // statement in the GetTranslatedSoapFault() routine in the - // Common/SoapFaults/ClientSoapErrorTranslator.cpp file - // 3) A case statement for it near the end of the switch statement - // in the GetErrorString routine in the - // Client/Manager/Global.cpp file - - CLIENT_ERROR_LAST -}; - - -#define GET_FAULT_CODE(errstr) (atoi(errstr)) - -#endif //CLIENTSOAPFAULTCODES_H diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgent.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgent.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3851 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgent.cpp - */ - -#ifdef WIN32 -#define _WIN32_WINNT 0x0400 -#include -#include -#endif - -#include - -#include "KMSClientProfile.h" - -#include "KMS_AgentStub.h" -#include "KMS_DiscoveryStub.h" - -#include "KMSClientProfileImpl.h" -#include "KMSAgent.h" -#include "KMSAuditLogger.h" -#include "KMSAgentSoapUtilities.h" -#include "KMSAgentStringUtilities.h" -#include "KMSAgentPKICommon.h" -#include "KMSAgentLoadBalancer.h" - -#include "KMSAgentWebServiceNamespaces.h" -#include "k_setupssl.h" - -#include "ApplianceParameters.h" - -#include "AutoMutex.h" -#include "KMSAgentKeyCallout.h" - -#include "KMSAgentLoadBalancer.h" -#include "KMSAgentDataUnitCache.h" - -#ifdef K_SOLARIS_PLATFORM -#include "KMSAgentStorage.h" -#endif - -#include "ClientSoapFaultCodes.h" - -#ifdef METAWARE -#include "debug.h" -#include "sizet.h" -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -#endif - -#include "KMSAgentAESKeyWrap.h" -#include "KMSAgentKnownAnswerTests.h" - -#if defined(METAWARE) && defined(DEBUG_RETURNS) -extern "C" void ecpt_trace_msg (ECPT_TRACE_ENTRY*, char*, ...); - -#define RETURN(a) { ecpt_trace_msg( trace,"(returned=%x)",(a)); return(a); } - -#else -#define RETURN(a) return(a) -#endif - -/* KMS_AGENT_VERSION_STRING gets passed in via compilation flags */ -extern "C" const char KMSAgent_Version[KMS_MAX_VERSION_LENGTH + 1] = KMS_AGENT_VERSION_STRING; - - -/* The following enum and structs are used for QueryParameters in - * ListKeyGroup. Since they are only used in implementation code, - * so they are not in the header file in order to hide these details - */ - - -/*---------------------------Start Query Parameters Declartion -------- */ - -#define KMS_MAX_AGENT_FILTER_PARAMETERS 10 - -enum KMSAgent_SortOrder -{ - SORT_ORDER_ASCENDING = 0, - SORT_ORDER_DESCENDING -}; - -enum KMSAgent_FilterOperator -{ - FILTER_OPERATOR_EQUAL = 0, - FILTER_OPERATOR_NOT_EQUAL, - FILTER_OPERATOR_GREATER_THAN, - FILTER_OPERATOR_LESS_THAN, - FILTER_OPERATOR_GREATER_THAN_OR_EQUAL, - FILTER_OPERATOR_LESS_THAN_OR_EQUAL, - FILTER_OPERATOR_STARTS_WITH -}; - -struct KMSAgent_FilterParameters -{ - utf8char m_wsFieldName[KMS_MAX_FIELD_NAME + 1]; - enum KMSAgent_FilterOperator m_eFilterOperator; - utf8char m_wsFieldValue[KMS_MAX_FIELD_VALUE + 1]; -}; - -struct KMSAgent_QueryParameters -{ - utf8char m_wsSortFieldName[KMS_MAX_FIELD_NAME + 1]; - enum KMSAgent_SortOrder m_eSortOrder; - - struct KMSAgent_FilterParameters m_aFilterParameters[KMS_MAX_AGENT_FILTER_PARAMETERS]; - int m_iSizeFilterParameters; - - utf8char m_wsPreviousPageLastIDValue[KMS_MAX_ID + 1]; - utf8char m_wsPreviousPageLastSortFieldValue[KMS_MAX_FIELD_VALUE + 1]; -}; - -/*---------------------------End Of Query Parameters Declaration -------- */ - -#ifdef METAWARE -int CAgentLoadBalancer::FailOver (int i_iFailedApplianceIndex, - struct soap *i_pstSoap); -#endif - -extern const char * KMSAgent_GetVersion () -{ - return (KMSAgent_Version); -} - -static bool CopyQueryParametersFromRequest -( - struct soap *i_pstSoap, - int i_iPageSize, - struct KMS_Agent::KMS_Agent__QueryParameters *i_pQueryParameters, - struct KMSAgent_QueryParameters *i_pSourceQueryParameters - ) -{ - - // set page size - i_pQueryParameters->NextPageSize = i_iPageSize; - - // copy sort field name - i_pQueryParameters->SortFieldName = (char *) - soap_malloc(i_pstSoap, - sizeof (i_pSourceQueryParameters->m_wsSortFieldName)); - if (i_pQueryParameters->SortFieldName == NULL) - { - return (false); - } - strncpy(i_pQueryParameters->SortFieldName, - i_pSourceQueryParameters->m_wsSortFieldName, - sizeof (i_pSourceQueryParameters->m_wsSortFieldName)); - i_pQueryParameters->SortFieldName[sizeof (i_pSourceQueryParameters->m_wsSortFieldName)-1] = 0; - - // sort order - i_pQueryParameters->SortOrder = - (enum KMS_Agent::KMS_Agent__SortOrder)i_pSourceQueryParameters->m_eSortOrder; - - // copy filter parameters - i_pQueryParameters->FilterParameters.__size = - i_pSourceQueryParameters->m_iSizeFilterParameters; - - if (i_pQueryParameters->FilterParameters.__size > 0) - { - i_pQueryParameters-> - FilterParameters.__ptr = - (struct KMS_Agent::KMS_Agent__FilterParameters *)soap_malloc - (i_pstSoap, - sizeof (KMS_Agent::KMS_Agent__FilterParameters) * - i_pQueryParameters->FilterParameters.__size); - - if (i_pQueryParameters->FilterParameters.__ptr == NULL) - { - return (false); - } - } - else - { - i_pQueryParameters->FilterParameters.__ptr = NULL; - } - - for (int i = 0; i < i_pSourceQueryParameters->m_iSizeFilterParameters; i++) - { - struct KMS_Agent::KMS_Agent__FilterParameters *pParameters; - - pParameters = &(i_pQueryParameters->FilterParameters.__ptr[i]); - - // copy field name - pParameters->FieldName = ( - utf8cstr) soap_malloc(i_pstSoap, - sizeof (i_pSourceQueryParameters-> - m_aFilterParameters[i].m_wsFieldName)); - if (pParameters->FieldName == NULL) - { - return (false); - } - - strncpy(pParameters->FieldName, - i_pSourceQueryParameters->m_aFilterParameters[i].m_wsFieldName, - sizeof (i_pSourceQueryParameters-> - m_aFilterParameters[i].m_wsFieldName)); - pParameters->FieldName[sizeof (i_pSourceQueryParameters-> - m_aFilterParameters[i].m_wsFieldName)-1] = '\0'; - - // copy field value - pParameters->FieldValue = - (utf8cstr) soap_malloc - (i_pstSoap, - sizeof (i_pSourceQueryParameters->m_aFilterParameters[i].m_wsFieldValue)); - if (pParameters->FieldValue == NULL) - { - return (false); - } - - strncpy(pParameters->FieldValue, - i_pSourceQueryParameters->m_aFilterParameters[i].m_wsFieldValue, - sizeof (i_pSourceQueryParameters->m_aFilterParameters[i].m_wsFieldValue)); - pParameters->FieldValue[sizeof (i_pSourceQueryParameters->m_aFilterParameters[i].m_wsFieldValue)-1] = '\0'; - - // copy FilterOperator - pParameters->FilterOperator = - (KMS_Agent::KMS_Agent__FilterOperator) - i_pSourceQueryParameters->m_aFilterParameters[i].m_eFilterOperator; - } - - // copy PreviousPageLastIDValue - i_pQueryParameters->PreviousPageLastIDValue = - (utf8cstr) soap_malloc(i_pstSoap, - sizeof (i_pSourceQueryParameters->m_wsPreviousPageLastIDValue)); - if (i_pQueryParameters->PreviousPageLastIDValue == NULL) - { - return (false); - } - strncpy(i_pQueryParameters->PreviousPageLastIDValue, - i_pSourceQueryParameters->m_wsPreviousPageLastIDValue, - sizeof (i_pSourceQueryParameters->m_wsPreviousPageLastIDValue)); - i_pQueryParameters->PreviousPageLastIDValue[sizeof (i_pSourceQueryParameters->m_wsPreviousPageLastIDValue)-1] = '\0'; - - // copy PreviousPageLastIDValue - i_pQueryParameters->PreviousPageLastSortFieldValue = - (utf8cstr) soap_malloc(i_pstSoap, - sizeof (i_pSourceQueryParameters-> - m_wsPreviousPageLastSortFieldValue)); - if (i_pQueryParameters->PreviousPageLastSortFieldValue == NULL) - { - return (false); - } - strncpy(i_pQueryParameters->PreviousPageLastSortFieldValue, - i_pSourceQueryParameters->m_wsPreviousPageLastSortFieldValue, - sizeof (i_pSourceQueryParameters-> - m_wsPreviousPageLastSortFieldValue)); - i_pQueryParameters->PreviousPageLastSortFieldValue[sizeof (i_pSourceQueryParameters-> - m_wsPreviousPageLastSortFieldValue)-1] = 0; - - return (true); -} - -static void CopyQueryParametersFromResponse ( - struct KMSAgent_QueryParameters *i_pQueryParameters, - struct KMS_Agent::KMS_Agent__QueryParameters *i_pSourceQueryParameters) -{ - - // copy sort field name - if (i_pSourceQueryParameters->SortFieldName) - { - strncpy(i_pQueryParameters->m_wsSortFieldName, - i_pSourceQueryParameters->SortFieldName, - sizeof(i_pQueryParameters->m_wsSortFieldName)); - i_pQueryParameters->m_wsSortFieldName[sizeof(i_pQueryParameters->m_wsSortFieldName)-1] = '\0'; - } - - // copy order - i_pQueryParameters->m_eSortOrder = - (KMSAgent_SortOrder) i_pSourceQueryParameters->SortOrder; - - // copy filter parameters - i_pQueryParameters->m_iSizeFilterParameters = - i_pSourceQueryParameters->FilterParameters.__size; - - // we only accept this amount of parameters - if (i_pQueryParameters->m_iSizeFilterParameters >= KMS_MAX_AGENT_FILTER_PARAMETERS) - { - // this should not happen, but just for defending the code - i_pQueryParameters->m_iSizeFilterParameters = KMS_MAX_AGENT_FILTER_PARAMETERS; - } - - for (int i = 0; i < i_pQueryParameters->m_iSizeFilterParameters; i++) - { - struct KMS_Agent::KMS_Agent__FilterParameters *pParameters; - - pParameters = i_pSourceQueryParameters->FilterParameters.__ptr + i; - - i_pQueryParameters->m_aFilterParameters[i].m_eFilterOperator - = (KMSAgent_FilterOperator) pParameters->FilterOperator; - - if (pParameters->FieldName) - { - strncpy(i_pQueryParameters->m_aFilterParameters[i].m_wsFieldName, - pParameters->FieldName, - sizeof (i_pQueryParameters->m_aFilterParameters[i].m_wsFieldName)); - i_pQueryParameters-> - m_aFilterParameters[i].m_wsFieldName[sizeof (i_pQueryParameters->m_aFilterParameters[i].m_wsFieldName) - 1] = '\0'; - } - - if (pParameters->FieldValue) - { - strncpy(i_pQueryParameters->m_aFilterParameters[i].m_wsFieldValue, - pParameters->FieldValue, - sizeof(i_pQueryParameters->m_aFilterParameters[i].m_wsFieldValue)); - i_pQueryParameters-> - m_aFilterParameters[i].m_wsFieldValue[sizeof(i_pQueryParameters->m_aFilterParameters[i].m_wsFieldValue)-1] = '\0'; - } - } - // copy PreviousPageLastIDValue - if (i_pSourceQueryParameters->PreviousPageLastIDValue) - { - strncpy(i_pQueryParameters->m_wsPreviousPageLastIDValue, - i_pSourceQueryParameters->PreviousPageLastIDValue, - sizeof(i_pQueryParameters->m_wsPreviousPageLastIDValue)); - i_pQueryParameters->m_wsPreviousPageLastIDValue[sizeof(i_pQueryParameters->m_wsPreviousPageLastIDValue)-1] = '\0'; - } - - // copy PreviousPageLastSortFieldValue - if (i_pSourceQueryParameters->PreviousPageLastSortFieldValue) - { - strncpy(i_pQueryParameters->m_wsPreviousPageLastSortFieldValue, - i_pSourceQueryParameters->PreviousPageLastSortFieldValue, - sizeof(i_pQueryParameters->m_wsPreviousPageLastSortFieldValue)); - i_pQueryParameters->m_wsPreviousPageLastSortFieldValue[sizeof(i_pQueryParameters->m_wsPreviousPageLastSortFieldValue)-1] = '\0'; - } - -} - -/** - * copies data unit to the soap data unit structure, placing the xsd_string types on the - * gsoap heap. - * @return(false if soap_malloc fails - */ -static bool CopyDataUnitFromRequest (struct soap *i_pstSoap, - struct KMS_Agent::KMS_Agent__DataUnit *i_pDataUnit, - const KMSAgent_DataUnit * const i_pSourceDataUnit) -{ - - if (i_pSourceDataUnit) - { - // copy field name - i_pDataUnit->DataUnitID = - (utf8cstr) soap_malloc(i_pstSoap, - 2 * sizeof (i_pSourceDataUnit->m_acDataUnitID) + 1); - if (i_pDataUnit->DataUnitID == NULL) - { - return (false); - } - - ConvertBinaryToUTF8HexString(i_pDataUnit->DataUnitID, - i_pSourceDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - } - else - { - strcpy(i_pDataUnit->DataUnitID, ""); - } - - i_pDataUnit->ExternalUniqueID = (utf8cstr) soap_malloc(i_pstSoap, - 2 * sizeof (i_pSourceDataUnit->m_acExternalUniqueID) + 1); - if (i_pDataUnit->ExternalUniqueID == NULL) - { - return (false); - } - - if (i_pSourceDataUnit->m_iExternalUniqueIDLength > 0 && - i_pSourceDataUnit->m_iExternalUniqueIDLength <= KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE) - { - ConvertBinaryToUTF8HexString(i_pDataUnit->ExternalUniqueID, - i_pSourceDataUnit->m_acExternalUniqueID, - i_pSourceDataUnit->m_iExternalUniqueIDLength); - } - else - { - strcpy(i_pDataUnit->ExternalUniqueID, ""); - } - - i_pDataUnit->ExternalTag = (utf8cstr) soap_malloc(i_pstSoap, sizeof (i_pSourceDataUnit->m_acExternalTag)); - if (i_pDataUnit->ExternalTag == NULL) - { - return (false); - } - - if (strlen(i_pSourceDataUnit->m_acExternalTag) <= sizeof (i_pSourceDataUnit->m_acExternalTag)) - { - strncpy(i_pDataUnit->ExternalTag, - i_pSourceDataUnit->m_acExternalTag, - sizeof (i_pSourceDataUnit->m_acExternalTag)); - i_pDataUnit->ExternalTag[sizeof (i_pSourceDataUnit->m_acExternalTag)-1] = '\0'; - } - else - { - strcpy(i_pDataUnit->ExternalTag, ""); - } - - i_pDataUnit->Description = (utf8cstr) soap_malloc(i_pstSoap, sizeof (i_pSourceDataUnit->m_acDescription)); - if (i_pDataUnit->Description == NULL) - { - return (false); - } - if (strlen(i_pSourceDataUnit->m_acDescription) <= sizeof (i_pSourceDataUnit->m_acDescription)) - { - strncpy(i_pDataUnit->Description, - i_pSourceDataUnit->m_acDescription, - sizeof (i_pSourceDataUnit->m_acDescription)); - i_pDataUnit->Description[sizeof (i_pSourceDataUnit->m_acDescription)-1] = '\0'; - } - else - { - strcpy(i_pDataUnit->Description, ""); - } - - i_pDataUnit->DataUnitState = (KMS_Agent::KMS_Agent__DataUnitState) i_pSourceDataUnit->m_iDataUnitState; - - return (true); -} - -/** - * Converts an ExternalUniqueID value to UTF8Hexstring value from gSoap managed heap storage - * @param i_pstSoap pointer to gSoap runtime - * @param i_pExternalUniqueID non-NULL pointer to an external unique id to be converted - * @return(NULL if memory cannot be allocated - */ -static char * ConvertBinaryDataFromRequest (struct soap *i_pstSoap, - const unsigned char * i_pBinaryData, - int i_iBinaryDataLen) -{ - char * pBinaryData = (char *) soap_malloc(i_pstSoap, 2 * i_iBinaryDataLen + 1); - if (pBinaryData != NULL) - { - ConvertBinaryToUTF8HexString(pBinaryData, - i_pBinaryData, - i_iBinaryDataLen); - } - return (pBinaryData); -} - -/** - * Converts a UTF8 char string value to a fixed length array from - * gSoap managed heap storage - * @param pointer to gSoap runtime - * @param i_pUTF8string non-NULL pointer to a null terminated UTF8 string - * @param i_iLen size of arrray to be allocated - * @return(NULL if gSoap allocated storage could not be obtained - */ -static char * ConvertUTF8StringFromRequest (struct soap *i_pstSoap, - const char * const i_pUTF8string, - size_t i_iLen) -{ - char * pUTF8string = NULL; - pUTF8string = (char *) soap_malloc(i_pstSoap, i_iLen); - if (pUTF8string != NULL) - { - strncpy(pUTF8string, i_pUTF8string, i_iLen); - pUTF8string[i_iLen-1] = '\0'; - } - return (pUTF8string); -} - -static KMSAgent_ArrayOfKeyGroups * CopyKeyGroupsResponse -( - struct KMS_Agent::KMS_Agent__ArrayOfKeyGroups *i_pKeyGroupsResponse - ) -{ - // alloc memory for result - KMSAgent_ArrayOfKeyGroups *pResult = - (KMSAgent_ArrayOfKeyGroups *) calloc(1, sizeof (KMSAgent_ArrayOfKeyGroups)); - - // no memory, return - if (pResult == NULL) - { - return (NULL); - } - - // copy size - pResult->m_iSize = i_pKeyGroupsResponse->__size; - - // if the size is 0, return(an empty result - if (pResult->m_iSize == 0) - { - return (pResult); - } - - // alloc memory for all key groups - pResult->m_pKeyGroups = (KMSAgent_KeyGroup*) - calloc(1, sizeof (KMSAgent_KeyGroup) * pResult->m_iSize); - - if (pResult->m_pKeyGroups == NULL) - { - free(pResult); - return (NULL); - } - - for (int i = 0; i < pResult->m_iSize; i++) - { - KMSAgent_KeyGroup *pKeyGroup; - - pKeyGroup = &(pResult->m_pKeyGroups[i]); - - strncpy(pKeyGroup->m_acKeyGroupID, - i_pKeyGroupsResponse->__ptr[i].KeyGroupID, - sizeof(pKeyGroup->m_acKeyGroupID)); - pKeyGroup->m_acKeyGroupID[sizeof(pKeyGroup->m_acKeyGroupID)-1] = '\0'; - - strncpy(pKeyGroup->m_acDescription, - i_pKeyGroupsResponse->__ptr[i].Description, - sizeof(pKeyGroup->m_acDescription)); - pKeyGroup->m_acDescription[sizeof(pKeyGroup->m_acDescription)-1] = '\0'; - } - - return (pResult); -} -/** - * allocate storage for the KMSAgent_ArrayOfKeys struct and the array of keys returned in the - * soap response. - * @param i_pProfile pointer to profile - * @param io_pClusterIndex pointer to the cluster index value which is used - * by AES Key Unwrap to access the KWK for the KMA corresponding to the - * cluster index. - * @param i_pKeysResponse pointer to the soap response' array of keys struct - * @return(pointer to allocated KMSAgent_ArrayOfKeys and the corresponding keys, returns NULL - * on any error and frees any allocated storage before returning. For response data validation errors a - * message will be logged. - */ -static KMSAgent_ArrayOfKeys * CopyDataUnitKeysResponse ( - KMSClientProfile *i_pProfile, - int * const io_pClusterIndex, - struct KMS_Agent::KMS_Agent__ArrayOfKeys *i_pKeysResponse) -{ - KMSAgent_ArrayOfKeys * pResult = - (KMSAgent_ArrayOfKeys *) calloc(1, sizeof (KMSAgent_ArrayOfKeys)); - - if (pResult == NULL) - { - return (NULL); - } - - // if the size is 0, return(an empty result - if (i_pKeysResponse->__size == 0) - { - return (pResult); - } - - if (i_pKeysResponse->__size > KMS_MAX_PAGE_SIZE) - { - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_ARRAY_SIZE_RESPONSE, - NULL, - NULL, - NULL); - return (NULL); - } - - pResult->m_iSize = i_pKeysResponse->__size; - - // alloc memory for all keys returned - pResult->m_pKeys = (KMSAgent_Key*) - calloc(1, sizeof (KMSAgent_Key) * i_pKeysResponse->__size); - - if (pResult->m_pKeys == NULL) - { - free(pResult); - return (NULL); - // no memory, don't log - } - - // copy keys from response - for (int i = 0; i < i_pKeysResponse->__size; i++) - { - if (KMS_KEY_ID_SIZE != ConvertUTF8HexStringToBinary( - i_pKeysResponse->__ptr[i].KeyID, NULL)) - { - free(pResult->m_pKeys); - free(pResult); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_RESPONSE, - NULL, - NULL, - NULL); - return (NULL); - } - - ConvertUTF8HexStringToBinary( - i_pKeysResponse->__ptr[i].KeyID, pResult->m_pKeys[i].m_acKeyID); - - if ((KMS_AGENT_KEY_STATE) i_pKeysResponse->__ptr[i].KeyState < KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS || - (KMS_AGENT_KEY_STATE) i_pKeysResponse->__ptr[i].KeyState > KMS_KEY_STATE_COMPROMISED) - { - free(pResult->m_pKeys); - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_STATE_RESPONSE, - NULL, - NULL, - NULL); - return (NULL); - } - pResult->m_pKeys[i].m_iKeyState = (KMS_AGENT_KEY_STATE) i_pKeysResponse->__ptr[i].KeyState; - - if ((KMS_KEY_TYPE) i_pKeysResponse->__ptr[i].KeyType != (KMS_KEY_TYPE)KMS_KEY_TYPE_AES_256) - { - free(pResult->m_pKeys); - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_TYPE_RESPONSE, - NULL, - NULL, - NULL); - return (NULL); - } - pResult->m_pKeys[i].m_iKeyType = (KMS_KEY_TYPE) i_pKeysResponse->__ptr[i].KeyType; - - strncpy(pResult->m_pKeys[i].m_acKeyGroupID, - i_pKeysResponse->__ptr[i].KeyGroupID, - sizeof(pResult->m_pKeys[i].m_acKeyGroupID)); - pResult->m_pKeys[i].m_acKeyGroupID[sizeof(pResult->m_pKeys[i].m_acKeyGroupID)-1] = '\0'; - - CAgentLoadBalancer *pAgentLoadBalancer = reinterpret_cast - (i_pProfile->m_pAgentLoadBalancer); - - if (pAgentLoadBalancer->AESKeyWrapSupported(*io_pClusterIndex)) - { - if (i_pKeysResponse->__ptr[i].Key.__size != KMS_MAX_WRAPPED_KEY_SIZE) - { - free(pResult->m_pKeys); - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_WRAPPED_KEY_LENGTH_RESPONSE, - NULL, - NULL, - NULL); - return (NULL); - } - else - { - if (pAgentLoadBalancer->AESKeyUnwrap(io_pClusterIndex, - i_pKeysResponse->__ptr[i].Key.__ptr, - pResult->m_pKeys[i].m_acKey) == false) - { - free(pResult->m_pKeys); - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_AESKEYUNWRAP_ERROR, - NULL, - NULL, - NULL); - - return (NULL); - } - } - } - else // non-AES Key Wrap - { - if (i_pKeysResponse->__ptr[i].Key.__size != KMS_MAX_KEY_SIZE) - { - free(pResult->m_pKeys); - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_LENGTH_RESPONSE, - NULL, - NULL, - NULL); - return (NULL); - } - - memcpy(pResult->m_pKeys[i].m_acKey, - i_pKeysResponse->__ptr[i].Key.__ptr, - KMS_MAX_KEY_SIZE); - } - - pResult->m_pKeys[i].m_iKeyLength = KMS_MAX_KEY_SIZE; - - if (KMSAgentKeyCallout(pResult->m_pKeys[i].m_acKey) != 0) - { - free(pResult->m_pKeys); - free(pResult); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_KEY_CALLOUT_ERROR, - NULL, - NULL, - NULL); - return (NULL); - } - } - - return (pResult); -} - -/** - * This function returns the API status code based upon the error string in the profile and - * availability of KMAs. KMA availability determination is based upon the i_iKMAFailoverReturnCode - * parameter and the size of the cluster. A cluster size of 0 is an indicator that there are - * no KMAs available, unless cluster discovery is disabled by the profile's cluster discovery - * frequency. - * - * @param i_pProfile pointer to the profile - * @param i_iKMAFailoverReturnCode the return(code from CAgentLoadBalancer::Failover() or 0 - * if it was not called. This is used to for determining if KMS_AGENT_STATUS_KMS_UNAVAILABLE - * needs to be returned. - * @returns KMS_AGENT_STATUS_GENERIC_ERROR - * unless the profile's last error message field contains a message substring matching one of the - * KMSAgent service soap fault strings. - * - */ -static KMS_AGENT_STATUS KMSAgent_GetLastStatusCode (KMSClientProfile *i_pProfile, - int i_iKMAFailoverReturnCode) -{ - bool bServerError = false; - - FATAL_ASSERT(i_pProfile); - - // see KMSAgentLoadBalancer.h for return codes from Failover - - if (i_iKMAFailoverReturnCode == CAgentLoadBalancer::NO_FIPS_KMA_AVAILABLE) - { - return (KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE); - } - - // parse for server errors - - // when KMAs have no ready keys we want to inform the client, vs reporting that the KMS is unavailable - bServerError = ServerError(i_pProfile->m_wsErrorString, 0); - - // parse for Soap errors - const char* sFaultstringStart = strstr(i_pProfile->m_wsErrorString, "SoapFaultString="); - - int iErrorCode = INVALID_CLIENT_ERROR; // initially - - - // if there is a Soap error - if (sFaultstringStart) - { - if (SSL_InvalidCertificate(sFaultstringStart)) - { - // this can be caused by the KMS invalidating the agent's cert - return (KMS_AGENT_STATUS_ACCESS_DENIED); - } - iErrorCode = GET_FAULT_CODE(sFaultstringStart + strlen("SoapFaultString=")); - } - - -#ifdef METAWARE - // log the failure code/cause to the event log - LogToFile(i_iKMAFailoverReturnCode, i_pProfile->m_wsErrorString); - LogToFile(iErrorCode, "error code"); -#endif - - - // parse return code passed in from last call to FailOver, Balance or BalanceByDataUnitKeyID - // if failover reported no kma and there is a valid server error and client couldn't get keys - if (i_iKMAFailoverReturnCode == CAgentLoadBalancer::NO_KMA_AVAILABLE && - bServerError && - iErrorCode == CLIENT_ERROR_AGENT_NO_READY_KEYS) - { - return (KMS_AGENT_STATUS_KMS_UNAVAILABLE); - } - - // if there is a server error and we are doing discovery - if (bServerError && - ((i_pProfile->m_iClusterDiscoveryFrequency > 0 && - i_pProfile->m_iClusterNum == 0) - || iErrorCode == CLIENT_ERROR_AGENT_APPLIANCE_LOCKED)) - { - return (KMS_AGENT_STATUS_KMS_UNAVAILABLE); - } - - if (bServerError && i_iKMAFailoverReturnCode == CAgentLoadBalancer::NO_KMA_AVAILABLE) - { - return (KMS_AGENT_STATUS_KMS_UNAVAILABLE); - } - - if ( i_iKMAFailoverReturnCode == CAgentLoadBalancer::AES_KEY_UNWRAP_ERROR ) - return (KMS_AGENT_AES_KEY_UNWRAP_ERROR); - if ( i_iKMAFailoverReturnCode == CAgentLoadBalancer::AES_KEY_WRAP_SETUP_ERROR ) - return (KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR); - - if (iErrorCode == CLIENT_ERROR_ACCESS_DENIED) - return (KMS_AGENT_STATUS_ACCESS_DENIED); - if (iErrorCode == CLIENT_ERROR_SERVER_BUSY) - return (KMS_AGENT_STATUS_SERVER_BUSY); - if (iErrorCode == CLIENT_ERROR_AGENT_INVALID_PARAMETERS) - return (KMS_AGENT_STATUS_INVALID_PARAMETER); - if (iErrorCode == CLIENT_ERROR_AGENT_KEY_DOES_NOT_EXIST) - return (KMS_AGENT_STATUS_KEY_DOES_NOT_EXIST); - if (iErrorCode == CLIENT_ERROR_AGENT_KEY_DESTROYED) - return (KMS_AGENT_STATUS_KEY_DESTROYED); - if (iErrorCode == CLIENT_ERROR_AGENT_DATA_UNIT_ID_NOT_FOUND_EXTERNAL_ID_EXISTS) - return (KMS_AGENT_STATUS_DATA_UNIT_ID_NOT_FOUND_EXTERNAL_ID_EXISTS); - if (iErrorCode == CLIENT_ERROR_AGENT_DUPLICATE_EXTERNAL_ID) - return (KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS); - if (iErrorCode == CLIENT_ERROR_AGENT_NO_READY_KEYS) - return (KMS_AGENT_STATUS_KMS_NO_READY_KEYS); - - // this check is made last to allow other specific errors that may have occurred to take precedence, - // e.g. return access denied before reporting No FIPS KMAs - if (i_pProfile->m_eKMSmode == FIPS_MODE && - KMSClient_NoFIPSCompatibleKMAs(i_pProfile)) - { - return (KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE); - } - - return (KMS_AGENT_STATUS_GENERIC_ERROR); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_InitializeLibrary - *--------------------------------------------------------------------------*/ -#include "KMSAuditLogger.h" - -extern "C" -KMS_AGENT_STATUS KMSAgent_InitializeLibrary (utf8cstr const i_pWorkingDirectory, - int i_bUseFileLog) - -{ - bool bSuccess; - -#if defined(METAWARE) -#warn "debug timing is on" - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_InitializeLibrary); -#endif - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSAgent_InitializeLibrary : Entered"); -#endif - - bSuccess = KMSClient_InitializeLibrary( - i_pWorkingDirectory, - i_bUseFileLog); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMS_AGENT_STATUS_GENERIC_ERROR); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_KnownAnswerTests - * - *--------------------------------------------------------------------------*/ -KMS_AGENT_STATUS KMSAgent_KnownAnswerTests() -{ -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_KnownAnswerTests); -#endif - - // Known Answer Test on AES Key Wrap code - if ( KnownAnswerTestAESKeyWrap() != 0 ) - { - RETURN(KMS_AGENT_STATUS_FIPS_KAT_AES_KEYWRAP_ERROR); - } - - if ( KnownAnswerTestAESECB() != 0 ) - { - RETURN(KMS_AGENT_STATUS_FIPS_KAT_AES_ECB_ERROR); - } - - if ( KnownAnswerTestHMACSHA1() != 0 ) - { - RETURN(KMS_AGENT_STATUS_FIPS_KAT_HMAC_SHA1_ERROR); - } - - RETURN(KMS_AGENT_STATUS_OK); - -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_FinalizeLibrary - * - *--------------------------------------------------------------------------*/ - -extern "C" -KMS_AGENT_STATUS KMSAgent_FinalizeLibrary () -{ - bool bSuccess; - -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_FinalizeLibrary); -#endif - - bSuccess = KMSClient_FinalizeLibrary(); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMS_AGENT_STATUS_GENERIC_ERROR); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_GetLastErrorMessage - * - *--------------------------------------------------------------------------*/ - -extern "C" -utf8cstr KMSAgent_GetLastErrorMessage (KMSClientProfile* i_pProfile) -{ -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_GetLastErrorMessage); -#endif - - if (i_pProfile == NULL) - { - RETURN(NULL); - } - - RETURN(KMSClient_GetLastErrorMessage(i_pProfile)); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_GetClusterInformation - * - *--------------------------------------------------------------------------*/ -extern "C" -KMS_AGENT_STATUS KMSAgent_GetClusterInformation ( - KMSClientProfile * const i_pProfile, - int i_iEntitySiteIDSize, - int i_iClusterEntryArraySize, - utf8cstr const o_pEntitySiteID, - int * const o_pApplianceNum, - KMSClusterEntry * const o_pClusterEntryArray) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_GetClusterInformation); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!o_pEntitySiteID || (i_iEntitySiteIDSize <= (KMS_MAX_ENTITY_SITE_ID))) - { - Log(AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS, - NULL, - NULL, - "EntitySiteIDSize arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_iClusterEntryArraySize > KMS_MAX_CLUSTER_NUM) - { - Log(AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS, - NULL, - NULL, - "i_iClusterEntryArraySize exceeds KMS_MAX_CLUSTER_NUM"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!o_pApplianceNum) - { - Log(AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS, - NULL, - NULL, - "ApplianceNum arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!o_pClusterEntryArray || - (i_iClusterEntryArraySize <= 0)) - { - Log(AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS, - NULL, - NULL, - "ClusterEntry or Size arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - bSuccess = KMSClient_GetClusterInformation( - i_pProfile, - o_pEntitySiteID, - i_iEntitySiteIDSize, - o_pApplianceNum, - o_pClusterEntryArray, - i_iClusterEntryArraySize); - - // KMSClient_GetClusterInformation logs if there was an error - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, 0)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_SelectAppliance ( - KMSClientProfile * const i_pProfile, - utf8cstr const i_pApplianceAddress) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_SelectAppliance); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_SELECT_APPLIANCE_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pApplianceAddress) - { - Log(AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS, - NULL, - NULL, - "ApplianceAddress arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - // All modes are supported by this function. - - bSuccess = KMSClient_SelectAppliance(i_pProfile, i_pApplianceAddress); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, 0)); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_LoadProfile - * - *--------------------------------------------------------------------------*/ -extern "C" -KMS_AGENT_STATUS KMSAgent_LoadProfile ( - KMSClientProfile * const io_pProfile, - utf8cstr const i_pProfileName, - utf8cstr const i_pAgentID, - utf8cstr const i_pPassphrase, - utf8cstr const i_pInitialApplianceAddress, - int i_iTransactionTimeout, - int i_iFailOverLimit, - int i_iClusterDiscoveryFrequency, - int i_eKMSmode) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_LoadProfile); -#endif - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSAgent_LoadProfile : Entered"); -#endif - if (!io_pProfile || - !i_pProfileName || (strlen(i_pProfileName) <= 0)) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "Profile or Name arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pInitialApplianceAddress || (strlen(i_pInitialApplianceAddress) <= 0)) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "InitialApplianceAddress arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_iTransactionTimeout <= 0) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "TransactionTimeout arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (i_iClusterDiscoveryFrequency < 0) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "ClusterDiscoveryFrequency arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - // for enrollment both arguments are required - if ((i_pAgentID && !i_pPassphrase) || (i_pPassphrase && !i_pAgentID)) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "Enrollment requires AgentID & Passphrase"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pAgentID && (strlen(i_pAgentID) <= 0)) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "AgentID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pPassphrase && (strlen(i_pPassphrase) <= 0)) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "Passphrase arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if ( i_eKMSmode != DEFAULT_MODE && i_eKMSmode != FIPS_MODE ) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "KMS security mode arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (KMSClient_ProfileLoaded(io_pProfile)) - { - Log(AUDIT_CLIENT_AGENT_LOAD_PROFILE_PROFILE_ALREADY_LOADED, - NULL, - NULL, - "profile is already loaded and should be unloaded first"); - RETURN(KMS_AGENT_STATUS_PROFILE_ALREADY_LOADED); - } - - memset(io_pProfile, 0, sizeof (KMSClientProfile)); - char sInitialApplianceAddress[KMS_MAX_NETWORK_ADDRESS+1]; - strncpy(sInitialApplianceAddress, i_pInitialApplianceAddress, sizeof(sInitialApplianceAddress)); - sInitialApplianceAddress[sizeof(sInitialApplianceAddress)-1] = '\0'; - - // Convert to lower case - - for ( size_t i = 0; i < strlen( sInitialApplianceAddress ); i++ ) - { - if ( isupper( sInitialApplianceAddress[i] ) ) - { - sInitialApplianceAddress[i] = tolower( sInitialApplianceAddress[i] ); - } - } - - bSuccess = KMSClient_LoadProfile( - io_pProfile, - i_pProfileName, - i_pAgentID, - i_pPassphrase, - sInitialApplianceAddress, - i_iTransactionTimeout, - i_iFailOverLimit, - i_iClusterDiscoveryFrequency, - i_eKMSmode); - - if (bSuccess) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSAgent_LoadProfile : Returned ok"); -#endif - RETURN(KMS_AGENT_STATUS_OK); - } - - // when not enrolling & cluster discovery is disabled there are no - // soap transactions so failover would not have occurred - bool bEnrolling = i_pAgentID && i_pPassphrase; - - if (!bEnrolling && - i_iClusterDiscoveryFrequency == 0) - { - RETURN(KMSAgent_GetLastStatusCode(io_pProfile, 0)); - } - else - { -// if (i_eKMSmode == FIPS_MODE && -// KMSClient_NoFIPSCompatibleKMAs(io_pProfile)) -// { -// RETURN(KMSAgent_GetLastStatusCode(io_pProfile, -// CAgentLoadBalancer::NO_FIPS_KMA_AVAILABLE)); -// } - - RETURN(KMSAgent_GetLastStatusCode(io_pProfile, - CAgentLoadBalancer::NO_KMA_AVAILABLE)); - } -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_UnloadProfile - * - *--------------------------------------------------------------------------*/ -extern "C" -KMS_AGENT_STATUS KMSAgent_UnloadProfile (KMSClientProfile * const i_pProfile) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_UnloadProfile); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_UNLOAD_PROFILE_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - bSuccess = KMSClient_UnloadProfile(i_pProfile); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, 0)); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_DeleteProfile - * - *--------------------------------------------------------------------------*/ -extern "C" -KMS_AGENT_STATUS KMSAgent_DeleteProfile (utf8cstr i_pProfileName) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_DeleteProfile); -#endif - - if (!i_pProfileName || (strlen(i_pProfileName) <= 0)) - { - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - bSuccess = KMSClient_DeleteProfile(i_pProfileName); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMS_AGENT_STATUS_GENERIC_ERROR); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_ListKeyGroups - * - *--------------------------------------------------------------------------*/ - -extern "C" -KMS_AGENT_STATUS KMSAgent_ListKeyGroups ( - KMSClientProfile * const i_pProfile, - KMSAgent_ArrayOfKeyGroups* * const o_ppKeyGroups) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_ListKeyGroups); -#endif - - int bIsLastPage; - struct KMSAgent_QueryParameters stQueryParameters; - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_LIST_KEY_GROUPS_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_ppKeyGroups) - { - Log(AUDIT_CLIENT_AGENT_LIST_KEY_GROUPS_INVALID_PARAMETERS, - NULL, - NULL, - "KeyGroups arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - - // Get Key Groups - memset(&stQueryParameters, 0, sizeof (stQueryParameters)); - - struct KMS_Agent::KMS_Agent__QueryParameters oQueryParameters; - struct KMS_Agent::KMS_Agent__ListKeyGroupsResponse oResponse; - - memset(&oQueryParameters, 0, sizeof (oQueryParameters)); - - bSuccess = CopyQueryParametersFromRequest(pstSoap, - KMS_MAX_LIST_KEY_GROUPS, - &oQueryParameters, - &stQueryParameters); - if (!bSuccess) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory, don't log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - - int iIndex = pLoadBalancer->Balance(); - - if ( iIndex >= 0 ) - { - do - { - const char* sURL = - pLoadBalancer->GetHTTPSURL(iIndex, i_pProfile->m_iPortForAgentService); - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__ListKeyGroups( - pstSoap, - sURL, - NULL, - oQueryParameters, - oResponse) == SOAP_OK; - - if (!bSuccess) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, AUDIT_CLIENT_AGENT_LIST_KEY_GROUPS_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess)); - } - else - { - bSuccess = false; - } - - if (bSuccess) - { - bIsLastPage = oResponse.LastPage; - - *o_ppKeyGroups = CopyKeyGroupsResponse(&oResponse.KeyGroups); - if (*o_ppKeyGroups == NULL) - { - bSuccess = false; - // no memory, don't log - } - - CopyQueryParametersFromResponse(&stQueryParameters, - &oResponse.NextPageQueryParameters); - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - RETURN(KMS_AGENT_STATUS_OK); - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, iIndex)); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_FreeArrayOfKeyGroups - * - *--------------------------------------------------------------------------*/ - -extern "C" -void KMSAgent_FreeArrayOfKeyGroups ( - struct KMSAgent_ArrayOfKeyGroups *i_pArrayOfKeyGroups) -{ -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_FreeArrayOfKeyGroups); -#endif - if (!i_pArrayOfKeyGroups) - { - return; - } - - // free memory for all information groups - if (i_pArrayOfKeyGroups->m_pKeyGroups) - { - free(i_pArrayOfKeyGroups->m_pKeyGroups); - } - - free(i_pArrayOfKeyGroups); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_CreateKey ( - KMSClientProfile * const i_pProfile, - const KMSAgent_DataUnit * const i_pDataUnit, - KEY_GROUP_ID const i_pKeyGroupID, - KMSAgent_Key * const o_pKey) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_CreateKey); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_pKey) - { - Log(AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "Key arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - if (i_pKeyGroupID && - strlen(i_pKeyGroupID) > KMS_MAX_KEY_GROUP_ID_SIZE) - { - Log(AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "GroupID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - struct KMS_Agent::KMS_Agent__DataUnit - stDataUnit = {"", "", "", "", - (KMS_Agent::KMS_Agent__DataUnitState) 0}; - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__CreateKeyResponse oResponse; - - if (i_pDataUnit != NULL) - { - if (!CopyDataUnitFromRequest(pstSoap, - &stDataUnit, - i_pDataUnit)) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pKeyGroupID = NULL; - if (i_pKeyGroupID) - { - pKeyGroupID = ConvertUTF8StringFromRequest(pstSoap, - i_pKeyGroupID, - KMS_MAX_KEY_GROUP_ID_SIZE + 1); - if (pKeyGroupID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - - int iIndex; - UTF8_KEYID acKWKID; - bool bClientAESKeyWrapSetupError = false; - - if (i_pDataUnit) - { - // attempt to maintain affinity with KMA for specified DU ID - iIndex = pLoadBalancer->BalanceByDataUnitID( - i_pDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - } - else - { - iIndex = pLoadBalancer->Balance(); - } - - if (iIndex >= 0) - { - do - { - bSuccess = true; - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - Long64 lKMAID = pLoadBalancer->GetKMAID(iIndex); - - if (bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // if this fails we want to utilize normal failover logic, GetKWKID - // logs error - bSuccess = pLoadBalancer->GetKWKID(iIndex, lKMAID, pstSoap, - acKWKID, &bClientAESKeyWrapSetupError) ? true : false; - if (bSuccess) - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__CreateKey2( - pstSoap, - sURL, - NULL, - stDataUnit, - i_pKeyGroupID ? pKeyGroupID : (char *) "", - acKWKID, - //NOTE: this is ugly but the soap response struct's are the same for both flavors of CreateKey - *(reinterpret_cast(&oResponse))) == SOAP_OK; - } - } - else if (bSuccess) // NO AES Key Wrap - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__CreateKey( - pstSoap, - sURL, - NULL, - stDataUnit, - i_pKeyGroupID ? pKeyGroupID : (char *) "", - oResponse) == SOAP_OK; - } - - // don'f failover for Client side AES Key Wrap setup problems - if (!bSuccess && !bClientAESKeyWrapSetupError) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - if (bSuccess) - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess) && (!bClientAESKeyWrapSetupError)); - } - else - { - bSuccess = false; - } - - -#if defined(DEBUG) && defined(METAWARE) - log_printf("CreateKey gets keyID %s (size %x) \n", - oResponse.Key.KeyID, - sizeof (oResponse.Key.KeyID)); -#endif - - - if (bSuccess) - { - if (KMS_KEY_ID_SIZE != ConvertUTF8HexStringToBinary( - oResponse.Key.KeyID, NULL)) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEYID_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - - ConvertUTF8HexStringToBinary( - oResponse.Key.KeyID, // in - o_pKey->m_acKeyID); // out - -#if defined(DEBUG) && defined(METAWARE) - log_printf("CreateKey gets keyState %x (size %x) \n", - oResponse.Key.KeyState, - sizeof (oResponse.Key.KeyState)); -#endif - - if ((KMS_AGENT_KEY_STATE) oResponse.Key.KeyState < KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS || - (KMS_AGENT_KEY_STATE) oResponse.Key.KeyState > KMS_KEY_STATE_COMPROMISED) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_STATE_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - - o_pKey->m_iKeyState = (KMS_AGENT_KEY_STATE) oResponse.Key.KeyState; - -#if defined(DEBUG) && defined(METAWARE) - log_printf("CreateKey o_pKey->m_iKeyState %x (size %x) = " - "(KMS_AGENT_KEY_STATE) oResponse.Key.KeyState %x (size %x)\n", - o_pKey->m_iKeyState, - sizeof (o_pKey->m_iKeyState), - oResponse.Key.KeyState, - sizeof (oResponse.Key.KeyState)); -#endif - - - if ((KMS_KEY_TYPE) oResponse.Key.KeyType != KMS_KEY_TYPE_AES_256) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_TYPE_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - o_pKey->m_iKeyType = (KMS_KEY_TYPE) oResponse.Key.KeyType; - - if (strlen(oResponse.Key.KeyGroupID) > KMS_MAX_KEY_GROUP_ID_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - strncpy(o_pKey->m_acKeyGroupID, - oResponse.Key.KeyGroupID, - sizeof(o_pKey->m_acKeyGroupID)); - o_pKey->m_acKeyGroupID[sizeof(o_pKey->m_acKeyGroupID)-1] = '\0'; - } - - if ( bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // verify KWK ID matches what was registered - if (oResponse.Key.Key.__size != KMS_MAX_WRAPPED_KEY_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - if (pLoadBalancer->AESKeyUnwrap(&iIndex, oResponse.Key.Key.__ptr, - o_pKey->m_acKey) == false) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_AESKEYUNWRAP_ERROR, - NULL, - sKmaAddress, - NULL); - - bSuccess = false; - } - } - } - else if (bSuccess) // non-AES key wrap - { - if (oResponse.Key.Key.__size != KMS_MAX_KEY_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - memcpy(o_pKey->m_acKey, - oResponse.Key.Key.__ptr, - KMS_MAX_KEY_SIZE); - } - } - - if (bSuccess) - { - o_pKey->m_iKeyLength = KMS_MAX_KEY_SIZE; - - if (KMSAgentKeyCallout(o_pKey->m_acKey) != 0) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_KEY_KEY_CALLOUT_ERROR, - NULL, - NULL, - NULL); - bSuccess = false; - } - } - } - - if (bSuccess) - { - // add Key ID and the creating KMA IP address to the DU cache - CDataUnitCache* pDataUnitCache = (CDataUnitCache*) i_pProfile->m_pDataUnitCache; - - if (i_pProfile->m_iClusterDiscoveryFrequency != 0) // load balancing enabled - { - bSuccess = pDataUnitCache->Insert( - NULL, - 0, - o_pKey->m_acKeyID, - KMS_KEY_ID_SIZE, - pLoadBalancer->GetApplianceNetworkAddress(iIndex)); - } - } - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, - bClientAESKeyWrapSetupError ? - CAgentLoadBalancer::AES_KEY_WRAP_SETUP_ERROR : iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_CreateDataUnit ( - KMSClientProfile * const i_pProfile, - const unsigned char * i_pExternalUniqueID, - int i_iExternalUniqueIDIDLen, - utf8cstr const i_pExternalTag, - utf8cstr const i_pDescription, - KMSAgent_DataUnit * const o_pDataUnit) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_CreateDataUnit); -#endif - -#if defined(DEBUG) && defined(METAWARE) -#warn "debug Create Data Unit is on" - log_printf("KMSAgent_CreateDataUnit entered\n"); - log_printf("KMSAgent_CreateDataUnit profile=%x\n", i_pProfile); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_pDataUnit) - { - Log(AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnit arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - // validate input parms - - if (i_pExternalUniqueID && - (i_iExternalUniqueIDIDLen <= 0 || - i_iExternalUniqueIDIDLen > KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE)) - { - Log(AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "ExternalUniqueID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pExternalTag && strlen(i_pExternalTag) > KMS_MAX_EXTERNAL_TAG) - { - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pDescription && strlen(i_pDescription) > KMS_MAX_DESCRIPTION) - { - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__CreateDataUnitResponse oResponse; - - char * pExternalUniqueID = NULL; - if (i_pExternalUniqueID) - { - pExternalUniqueID = ConvertBinaryDataFromRequest(pstSoap, - i_pExternalUniqueID, - i_iExternalUniqueIDIDLen); - if (pExternalUniqueID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pExternalTag = NULL; - if (i_pExternalTag) - { - pExternalTag = ConvertUTF8StringFromRequest(pstSoap, - i_pExternalTag, - strlen(i_pExternalTag) + 1); - if (pExternalTag == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pDescription = NULL; - if (i_pDescription) - { - pDescription = ConvertUTF8StringFromRequest(pstSoap, - i_pDescription, - strlen(i_pDescription) + 1); - if (pDescription == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - int iIndex = pLoadBalancer->Balance(); - - if (iIndex >= 0) - { - do - { - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__CreateDataUnit( - pstSoap, - sURL, - NULL, - i_pExternalUniqueID ? pExternalUniqueID : (char *) "", - i_pExternalTag ? pExternalTag : (char *) "", - i_pDescription ? pDescription : (char *) "", - oResponse) == SOAP_OK; - - if (!bSuccess) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - - } - while (iIndex >= 0 && (!bSuccess)); - } - else - { - bSuccess = false; - } - - if (bSuccess) - { - int iDataUnitIDLength; - iDataUnitIDLength = ConvertUTF8HexStringToBinary( - oResponse.DataUnit.DataUnitID, o_pDataUnit->m_acDataUnitID); - - if (iDataUnitIDLength != KMS_DATA_UNIT_ID_SIZE) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("iDataUnitIDLength (%x) != KMS_DATA_UNIT_ID_SIZE (%x)", - iDataUnitIDLength, - KMS_DATA_UNIT_ID_SIZE); -#endif - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_DU_ID_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - o_pDataUnit->m_iExternalUniqueIDLength = ConvertUTF8HexStringToBinary( - oResponse.DataUnit.ExternalUniqueID, o_pDataUnit->m_acExternalUniqueID); - - if (strlen(oResponse.DataUnit.ExternalTag) > KMS_MAX_EXTERNAL_TAG) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - else - { - strncpy(o_pDataUnit->m_acExternalTag, - oResponse.DataUnit.ExternalTag, - sizeof(o_pDataUnit->m_acExternalTag)); - o_pDataUnit->m_acExternalTag[sizeof(o_pDataUnit->m_acExternalTag)-1] = '\0'; - } - - if (strlen(oResponse.DataUnit.Description) > KMS_MAX_DESCRIPTION) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_DESCRIPTION_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - else - { - strcpy(o_pDataUnit->m_acDescription, - oResponse.DataUnit.Description); - } - - o_pDataUnit->m_iDataUnitState = - (KMS_AGENT_DATA_UNIT_STATE) oResponse.DataUnit.DataUnitState; - } - - if (bSuccess) - { - // add data unit ID and the creating KMA IP address to the DU cache - CDataUnitCache* pDataUnitCache = (CDataUnitCache*) i_pProfile->m_pDataUnitCache; - - if (i_pProfile->m_iClusterDiscoveryFrequency != 0) // load balancing enabled - { - bSuccess = pDataUnitCache->Insert( - o_pDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE, - NULL, 0, - pLoadBalancer->GetApplianceNetworkAddress(iIndex)); - } - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_DisassociateDataUnitKeys ( - KMSClientProfile * const i_pProfile, - const KMSAgent_DataUnit * const i_pDataUnit) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_DisassociateDataUnitKeys); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_DISASSOCIATE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!i_pDataUnit) - { - Log(AUDIT_CLIENT_AGENT_DISASSOCIATE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnit arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - struct KMS_Agent::KMS_Agent__DataUnit stDataUnit = {"", "", "", "", - (KMS_Agent::KMS_Agent__DataUnitState) 0}; - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__DisassociateDataUnitKeysResponse oResponse; - - if (!CopyDataUnitFromRequest(pstSoap, - &stDataUnit, - i_pDataUnit)) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - int iIndex = pLoadBalancer->BalanceByDataUnitID( - i_pDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - - if (iIndex >= 0) - { - do - { - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__DisassociateDataUnitKeys( - pstSoap, - sURL, - NULL, - stDataUnit, - oResponse) == SOAP_OK; - - if (!bSuccess) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_DISASSOCIATE_DATA_UNIT_KEYS_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess)); - } - else - { - bSuccess = false; - } - - // no response data for this transaction - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_RetrieveKey ( - KMSClientProfile * const i_pProfile, - const unsigned char * const i_pKeyID, - const KMSAgent_DataUnit * const i_pDataUnit, - utf8cstr const i_pKeyGroupID, - KMSAgent_Key * const o_pKey) -{ - bool bSuccess; - -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_RetrieveKey); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pKeyID) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "KeyID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_pKey) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "Key arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - if (i_pKeyGroupID && - strlen(i_pKeyGroupID) > KMS_MAX_KEY_GROUP_ID_SIZE) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "GroupID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - struct KMS_Agent::KMS_Agent__DataUnit stDataUnit = {"", "", "", "", - (KMS_Agent::KMS_Agent__DataUnitState) 0}; - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__RetrieveKeyResponse oResponse; - - char * pKeyID = NULL; - pKeyID = ConvertBinaryDataFromRequest(pstSoap, - i_pKeyID, - KMS_KEY_ID_SIZE); - if (pKeyID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - - if (i_pDataUnit != NULL) - { - if (!CopyDataUnitFromRequest(pstSoap, - &stDataUnit, - i_pDataUnit)) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pKeyGroupID = NULL; - if (i_pKeyGroupID) - { - pKeyGroupID = ConvertUTF8StringFromRequest(pstSoap, - i_pKeyGroupID, - KMS_MAX_KEY_GROUP_ID_SIZE + 1); - if (pKeyGroupID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - UTF8_KEYID acKWKID; - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - bool bClientAESKeyWrapSetupError = false; - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - int iIndex = pLoadBalancer->BalanceByDataUnitKeyID(i_pKeyID, KMS_KEY_ID_SIZE); - - if (iIndex >= 0) - { - do - { - bSuccess = true; - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - Long64 lKMAID = pLoadBalancer->GetKMAID(iIndex); - - if (bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // if this fails we want to utilize normal failover logic, GetKWKID - // logs error - bSuccess = pLoadBalancer->GetKWKID(iIndex, lKMAID, pstSoap, - acKWKID, &bClientAESKeyWrapSetupError) ? true : false; - if (bSuccess) - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveKey2( - pstSoap, - sURL, - NULL, - pKeyID, - stDataUnit, - i_pKeyGroupID ? i_pKeyGroupID : (char *) "", - acKWKID, - //NOTE: this is ugly but the soap response struct's are the same for both flavors of CreateKey - *(reinterpret_cast(&oResponse))) == SOAP_OK; - } - } - else if (bSuccess) // NO AES Key Wrap - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveKey( - pstSoap, - sURL, - NULL, - pKeyID, - stDataUnit, - i_pKeyGroupID ? i_pKeyGroupID : (char *) "", - oResponse) == SOAP_OK; - } - - // don'f failover for Client side AES Key Wrap setup problems - if (!bSuccess && !bClientAESKeyWrapSetupError) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - if (bSuccess) - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess) && (!bClientAESKeyWrapSetupError)); - } - else - { - bSuccess = false; - } - - if (bSuccess) - { - if (KMS_KEY_ID_SIZE != ConvertUTF8HexStringToBinary( - oResponse.Key.KeyID, NULL)) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEYID_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - } - - if (bSuccess) - { - ConvertUTF8HexStringToBinary( - oResponse.Key.KeyID, o_pKey->m_acKeyID); - - //if ( oResponse.Key.KeyState < (KMS_Agent__KeyState)KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS || - // oResponse.Key.KeyState > (KMS_Agent__KeyState)KMS_KEY_STATE_COMPROMISED ) - if ((KMS_AGENT_KEY_STATE) oResponse.Key.KeyState < KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS || - (KMS_AGENT_KEY_STATE) oResponse.Key.KeyState > KMS_KEY_STATE_COMPROMISED) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_STATE_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - - o_pKey->m_iKeyState = (KMS_AGENT_KEY_STATE) oResponse.Key.KeyState; - - if ((KMS_KEY_TYPE) oResponse.Key.KeyType != KMS_KEY_TYPE_AES_256) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_TYPE_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - - o_pKey->m_iKeyType = (KMS_KEY_TYPE) oResponse.Key.KeyType; - - if (strlen(oResponse.Key.KeyGroupID) > KMS_MAX_KEY_GROUP_ID_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - strncpy(o_pKey->m_acKeyGroupID, - oResponse.Key.KeyGroupID, - sizeof(o_pKey->m_acKeyGroupID)); - o_pKey->m_acKeyGroupID[sizeof(o_pKey->m_acKeyGroupID)-1] = '\0'; - } - - if ( bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // verify KWK ID matches what was registered - if (oResponse.Key.Key.__size != KMS_MAX_WRAPPED_KEY_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - if (pLoadBalancer->AESKeyUnwrap(&iIndex, oResponse.Key.Key.__ptr, - o_pKey->m_acKey) == false) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_AESKEYUNWRAP_ERROR, - NULL, - sKmaAddress, - NULL); - - bSuccess = false; - } - } - } - else if (bSuccess) // non-AES key wrap - { - if (oResponse.Key.Key.__size != KMS_MAX_KEY_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - memcpy(o_pKey->m_acKey, - oResponse.Key.Key.__ptr, - KMS_MAX_KEY_SIZE); - } - } - - if (bSuccess) - { - o_pKey->m_iKeyLength = KMS_MAX_KEY_SIZE; - - if (KMSAgentKeyCallout(o_pKey->m_acKey) != 0) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_KEY_KEY_CALLOUT_ERROR, - NULL, - NULL, - NULL); - bSuccess = false; - } - } - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, - bClientAESKeyWrapSetupError ? - CAgentLoadBalancer::AES_KEY_WRAP_SETUP_ERROR : iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_RetrieveDataUnit ( - KMSClientProfile * const i_pProfile, - const unsigned char * const i_pDataUnitID, - const unsigned char * const i_pExternalUniqueID, - int i_iExternalUniqueIDLen, - utf8cstr const i_pExternalTag, - utf8cstr const i_pDescription, - KMSAgent_DataUnit * const o_pDataUnit) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_RetrieveDataUnit); -#endif - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSAgent_RetrieveDataUnit entered\n"); -#endif - - // required parms - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pDataUnitID) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnitID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_pDataUnit) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnit arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSAgent_RetrieveDataUnit profile not loaded\n"); -#endif - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - // validate input parms - - if (i_pExternalUniqueID && - (i_iExternalUniqueIDLen <= 0 || - i_iExternalUniqueIDLen > KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE)) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "ExternalUniqueID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pExternalTag && strlen(i_pExternalTag) > KMS_MAX_EXTERNAL_TAG) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "ExternalTag arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pDescription && - strlen(i_pDescription) > KMS_MAX_DESCRIPTION) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS, - NULL, - NULL, - "Description arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - // prepare args to soap transaction - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__RetrieveDataUnitResponse oResponse; - - char * pDataUnitID = NULL; - pDataUnitID = ConvertBinaryDataFromRequest(pstSoap, - i_pDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - //sizeof(DATA_UNIT_ID) ); - if (pDataUnitID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - - char * pExternalUniqueID = NULL; - if (i_pExternalUniqueID) - { - pExternalUniqueID = ConvertBinaryDataFromRequest(pstSoap, - i_pExternalUniqueID, - i_iExternalUniqueIDLen); - if (pExternalUniqueID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pExternalTag = NULL; - if (i_pExternalTag) - { - pExternalTag = ConvertUTF8StringFromRequest(pstSoap, - i_pExternalTag, - KMS_MAX_EXTERNAL_TAG + 1); - if (pExternalTag == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pDescription = NULL; - if (i_pDescription) - { - pDescription = ConvertUTF8StringFromRequest(pstSoap, - i_pDescription, - KMS_MAX_DESCRIPTION + 1); - if (pDescription == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - int iIndex = pLoadBalancer->BalanceByDataUnitID(i_pDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - - if ( iIndex >= 0 ) - { - do - { - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveDataUnit( - pstSoap, - sURL, - NULL, - pDataUnitID, - i_pExternalUniqueID ? pExternalUniqueID : (char *) "", - i_pExternalTag ? pExternalTag : (char *) "", - i_pDescription ? pDescription : (char *) "", - oResponse) == SOAP_OK; - - if (!bSuccess) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess)); - } - else - { - bSuccess = false; - } - - if (bSuccess) - { - ConvertUTF8HexStringToBinary( - oResponse.DataUnit.DataUnitID, o_pDataUnit->m_acDataUnitID); - - o_pDataUnit->m_iExternalUniqueIDLength = ConvertUTF8HexStringToBinary( - oResponse.DataUnit.ExternalUniqueID, o_pDataUnit->m_acExternalUniqueID); - - if (strlen(oResponse.DataUnit.ExternalTag) > KMS_MAX_EXTERNAL_TAG) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - else - { - strncpy(o_pDataUnit->m_acExternalTag, - oResponse.DataUnit.ExternalTag, - sizeof(o_pDataUnit->m_acExternalTag)); - o_pDataUnit->m_acExternalTag[sizeof(o_pDataUnit->m_acExternalTag)-1] = '\0'; - } - - if (strlen(oResponse.DataUnit.Description) > KMS_MAX_DESCRIPTION) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_RESPONSE_INVALID_DESCRIPTION_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - else - { - strcpy(o_pDataUnit->m_acDescription, - oResponse.DataUnit.Description); - } - - o_pDataUnit->m_iDataUnitState = - (KMS_AGENT_DATA_UNIT_STATE) oResponse.DataUnit.DataUnitState; - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_RetrieveDataUnitByExternalUniqueID ( - KMSClientProfile * const i_pProfile, - const unsigned char* const i_pExternalUniqueID, - int i_iExternalUniqueIDLen, - utf8cstr const i_pExternalTag, - utf8cstr const i_pDescription, - KMSAgent_DataUnit * const o_pDataUnit) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_RetrieveDataUnitByExternalUniqueID); -#endif - - // required parms - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pExternalUniqueID) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS, - NULL, - NULL, - "ExternalUniqueID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_pDataUnit) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnit arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - // validate input parms - - if (i_iExternalUniqueIDLen <= 0 || - i_iExternalUniqueIDLen > KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS, - NULL, - NULL, - "ExternalUniqueIDLen arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pExternalTag && strlen(i_pExternalTag) > KMS_MAX_EXTERNAL_TAG) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS, - NULL, - NULL, - "ExternalTag arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pDescription && - strlen(i_pDescription) > KMS_MAX_DESCRIPTION) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS, - NULL, - NULL, - "Description arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - // prepare args to soap transaction - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse oResponse; - - char * pExternalUniqueID = NULL; - pExternalUniqueID = ConvertBinaryDataFromRequest(pstSoap, - i_pExternalUniqueID, - i_iExternalUniqueIDLen); - if (pExternalUniqueID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - - char * pExternalTag = NULL; - if (i_pExternalTag) - { - pExternalTag = ConvertUTF8StringFromRequest(pstSoap, - i_pExternalTag, - KMS_MAX_EXTERNAL_TAG + 1); - if (pExternalTag == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pDescription = NULL; - if (i_pDescription) - { - pDescription = ConvertUTF8StringFromRequest(pstSoap, - i_pDescription, - KMS_MAX_DESCRIPTION + 1); - if (pDescription == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - int iIndex = pLoadBalancer->Balance(); - - if ( iIndex >= 0 ) - { - do - { - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - bSuccess = KMS_Agent:: - soap_call_KMS_Agent__RetrieveDataUnitByExternalUniqueID( - pstSoap, - sURL, - NULL, - pExternalUniqueID, - i_pExternalTag ? pExternalTag : (char *) "", - i_pDescription ? pDescription : (char *) "", - oResponse) == SOAP_OK; - - if (!bSuccess) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess)); - } - else - { - bSuccess = false; - } - - if (bSuccess) - { - ConvertUTF8HexStringToBinary( - oResponse.DataUnit.DataUnitID, o_pDataUnit->m_acDataUnitID); - - o_pDataUnit->m_iExternalUniqueIDLength = ConvertUTF8HexStringToBinary( - oResponse.DataUnit.ExternalUniqueID, - o_pDataUnit->m_acExternalUniqueID); - - if (strlen(oResponse.DataUnit.ExternalTag) > KMS_MAX_EXTERNAL_TAG) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - else - { - strncpy(o_pDataUnit->m_acExternalTag, - oResponse.DataUnit.ExternalTag, - sizeof(o_pDataUnit->m_acExternalTag)); - o_pDataUnit->m_acExternalTag[sizeof(o_pDataUnit->m_acExternalTag)-1] = '\0'; - } - - if (strlen(oResponse.DataUnit.Description) > KMS_MAX_DESCRIPTION) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_RESPONSE_INVALID_DESCRIPTION_LENGTH, - NULL, - NULL, - NULL); - bSuccess = false; - } - else - { - strcpy(o_pDataUnit->m_acDescription, - oResponse.DataUnit.Description); - } - - o_pDataUnit->m_iDataUnitState = - (KMS_AGENT_DATA_UNIT_STATE) oResponse.DataUnit.DataUnitState; - - if (bSuccess) - { - // RetrieveDataUnitByExternalUniqueID may create a DU so add data unit ID - // and the KMA IP address to the DU cache - CDataUnitCache* pDataUnitCache = (CDataUnitCache*) i_pProfile->m_pDataUnitCache; - - if (i_pProfile->m_iClusterDiscoveryFrequency != 0) // load balancing enabled - { - bSuccess = pDataUnitCache->Insert( - o_pDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE, - NULL, 0, - pLoadBalancer->GetApplianceNetworkAddress(iIndex)); - } - } - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_RetrieveDataUnitKeys ( - KMSClientProfile * const i_pProfile, - const KMSAgent_DataUnit * const i_pDataUnit, - int i_iPageSize, - int i_iPageOffset, - int* const o_piKeysRemaining, - const unsigned char * const i_pKeyID, - KMSAgent_ArrayOfKeys* * const o_ppKeys) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_RetrieveDataUnitKeys); -#endif - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pDataUnit) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnit arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_piKeysRemaining) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "KeysRemaining arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_ppKeys) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "Keys arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (i_pKeyID && i_iPageOffset != 0) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "KeyID and PageOffset are mutually exclusive"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - // validate input parms - - if (i_iPageSize <= 0 || i_iPageSize > KMS_MAX_PAGE_SIZE) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "PageSize arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_iPageOffset < 0) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS, - NULL, - NULL, - "PageOffset arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - // prepare args to soap transaction - - struct KMS_Agent::KMS_Agent__DataUnit stDataUnit = {"", "", "", "", - (KMS_Agent::KMS_Agent__DataUnitState) 0}; - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__RetrieveDataUnitKeysResponse oResponse; - - if (!CopyDataUnitFromRequest(pstSoap, - &stDataUnit, - i_pDataUnit)) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - - char * pKeyID = NULL; - if (i_pKeyID) - { - pKeyID = ConvertBinaryDataFromRequest(pstSoap, - i_pKeyID, - KMS_KEY_ID_SIZE); - if (pKeyID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - UTF8_KEYID acKWKID; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - bool bClientAESKeyWrapSetupError = false; - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - - int iIndex = pLoadBalancer->BalanceByDataUnitID(i_pDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - - if (iIndex >= 0) - { - do - { - bSuccess = true; - - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = 0; - - Long64 lKMAID = pLoadBalancer->GetKMAID(iIndex); - - if (bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // if this fails we want to utilize normal failover logic, GetKWKID - // logs error - bSuccess = pLoadBalancer->GetKWKID(iIndex, lKMAID, pstSoap, - acKWKID, &bClientAESKeyWrapSetupError) ? true : false; - if (bSuccess) - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveDataUnitKeys2( - pstSoap, - sURL, - NULL, - stDataUnit, - i_iPageSize, - i_iPageOffset, - pKeyID, - acKWKID, - *(reinterpret_cast(&oResponse))) == SOAP_OK; - } - } - else if (bSuccess) // No AES Key Wrap - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveDataUnitKeys( - pstSoap, - sURL, - NULL, - stDataUnit, - i_iPageSize, - i_iPageOffset, - pKeyID, - oResponse) == SOAP_OK; - } - - // don'f failover for Client side AES Key Wrap setup problems - if (!bSuccess && !bClientAESKeyWrapSetupError) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - if (bSuccess) - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess) && (!bClientAESKeyWrapSetupError)); - } - else - { - bSuccess = false; - } - - // validate response - - if (bSuccess && oResponse.KeysRemaining < 0) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEYS_REMAINING_RESPONSE, - NULL, - NULL, - NULL); - bSuccess = false; - } - - if (bSuccess && - (oResponse.Keys.__size < 0 || - oResponse.Keys.__size > i_iPageSize)) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEYS_SIZE_RESPONSE, - NULL, - NULL, - NULL); - bSuccess = false; - } - - if ( bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // verify KWK ID matches what was registered - } - - if (bSuccess) - { - *o_ppKeys = CopyDataUnitKeysResponse(i_pProfile, &iIndex, &oResponse.Keys); - - if (*o_ppKeys == NULL) - { - // CopyDataUnitKeysResponse logs errors - bSuccess = false; - } - *o_piKeysRemaining = (int) oResponse.KeysRemaining; - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, - bClientAESKeyWrapSetupError ? - CAgentLoadBalancer::AES_KEY_WRAP_SETUP_ERROR : iIndex)); -} - -extern "C" -KMS_AGENT_STATUS KMSAgent_RetrieveProtectAndProcessKey ( - KMSClientProfile * const i_pProfile, - const KMSAgent_DataUnit * const i_pDataUnit, - utf8cstr const i_pKeyGroupID, - KMSAgent_Key * const o_pKey) -{ - bool bSuccess; -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_RetrieveProtectAndProcessKey); -#endif - - if (!i_pProfile || !i_pDataUnit || !o_pKey) - { - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!i_pDataUnit) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "DataUnit arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!o_pKey) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "Key arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_pKeyGroupID && - strlen(i_pKeyGroupID) > KMS_MAX_KEY_GROUP_ID_SIZE) - { - Log(AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_PARAMETERS, - NULL, - NULL, - "GroupID arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - struct KMS_Agent::KMS_Agent__DataUnit stDataUnit ={"", "", "", "", - (KMS_Agent::KMS_Agent__DataUnitState) 0}; - - struct soap *pstSoap = (struct soap *) i_pProfile->m_pvSoap; - struct KMS_Agent::KMS_Agent__RetrieveProtectAndProcessKeyResponse oResponse; - - if (i_pDataUnit != NULL) - { - if (!CopyDataUnitFromRequest(pstSoap, - &stDataUnit, - i_pDataUnit)) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char * pKeyGroupID = NULL; - if (i_pKeyGroupID) - { - pKeyGroupID = ConvertUTF8StringFromRequest(pstSoap, - i_pKeyGroupID, - KMS_MAX_KEY_GROUP_ID_SIZE + 1); - if (pKeyGroupID == NULL) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - // no memory dont' log - RETURN(KMS_AGENT_STATUS_NO_MEMORY); - } - } - - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - bool bClientAESKeyWrapSetupError = false; - UTF8_KEYID acKWKID; - - CAgentLoadBalancer *pLoadBalancer = (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - int iIndex = pLoadBalancer->BalanceByDataUnitID(i_pDataUnit->m_acDataUnitID, - KMS_DATA_UNIT_ID_SIZE); - - if (iIndex >= 0) - { - do - { - bSuccess = true; - const char* sURL = pLoadBalancer->GetHTTPSURL( - iIndex, - i_pProfile->m_iPortForAgentService); - - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - Long64 lKMAID = pLoadBalancer->GetKMAID(iIndex); - - if (bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // if this fails we want to utilize normal failover logic, GetKWKID - // logs error - bSuccess = pLoadBalancer->GetKWKID(iIndex, lKMAID, pstSoap, - acKWKID, &bClientAESKeyWrapSetupError) - ? true : false; - if (bSuccess) - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveProtectAndProcessKey2( - pstSoap, - sURL, - NULL, - stDataUnit, - i_pKeyGroupID ? i_pKeyGroupID : (char *) "", - acKWKID, - *(reinterpret_cast(&oResponse))) == SOAP_OK; - } - } - else if (bSuccess) // No AES Key Wrap - { - bSuccess = KMS_Agent::soap_call_KMS_Agent__RetrieveProtectAndProcessKey( - pstSoap, - sURL, - NULL, - stDataUnit, - i_pKeyGroupID ? i_pKeyGroupID : (char *) "", - oResponse) == SOAP_OK; - } - - // don'f failover for Client side AES Key Wrap setup problems - if (!bSuccess && !bClientAESKeyWrapSetupError) - { - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - GetPeerNetworkAddress(sKmaAddress, pstSoap); - GetSoapFault(sSoapFaultMsg, pstSoap); - - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess) && (!bClientAESKeyWrapSetupError)); - } - else - { - bSuccess = false; - } - - if (bSuccess) - { - if (KMS_KEY_ID_SIZE != ConvertUTF8HexStringToBinary( - oResponse.Key.KeyID, NULL)) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEYID_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - } - - if (bSuccess) - { - ConvertUTF8HexStringToBinary( - oResponse.Key.KeyID, o_pKey->m_acKeyID); - - if ((KMS_AGENT_KEY_STATE) oResponse.Key.KeyState < KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS || - (KMS_AGENT_KEY_STATE) oResponse.Key.KeyState > KMS_KEY_STATE_COMPROMISED) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_STATE_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - - o_pKey->m_iKeyState = (KMS_AGENT_KEY_STATE) oResponse.Key.KeyState; - - if ((KMS_KEY_TYPE) oResponse.Key.KeyType != KMS_KEY_TYPE_AES_256) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_TYPE_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - - o_pKey->m_iKeyType = (KMS_KEY_TYPE) oResponse.Key.KeyType; - - if (strlen(oResponse.Key.KeyGroupID) > KMS_MAX_KEY_GROUP_ID_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - strncpy(o_pKey->m_acKeyGroupID, - oResponse.Key.KeyGroupID, - sizeof(o_pKey->m_acKeyGroupID)); - o_pKey->m_acKeyGroupID[sizeof(o_pKey->m_acKeyGroupID)-1] = '\0'; - } - - if ( bSuccess && pLoadBalancer->AESKeyWrapSupported(iIndex)) - { - // verify KWK ID matches what was registered - if (oResponse.Key.Key.__size != KMS_MAX_WRAPPED_KEY_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - if (pLoadBalancer->AESKeyUnwrap(&iIndex, oResponse.Key.Key.__ptr, - o_pKey->m_acKey) == false) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_AESKEYUNWRAP_ERROR, - NULL, - sKmaAddress, - NULL); - - bSuccess = false; - } - } - } - else if (bSuccess) // non-AES key wrap - { - if (oResponse.Key.Key.__size != KMS_MAX_KEY_SIZE) - { - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_LENGTH_RESPONSE, - NULL, - sKmaAddress, - NULL); - bSuccess = false; - } - else - { - memcpy(o_pKey->m_acKey, - oResponse.Key.Key.__ptr, - KMS_MAX_KEY_SIZE); - } - } - - if (bSuccess) - { - o_pKey->m_iKeyLength = KMS_MAX_KEY_SIZE; - - if (KMSAgentKeyCallout(o_pKey->m_acKey) != 0) - { - LogError(i_pProfile, - AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_KEY_CALLOUT_ERROR, - NULL, - NULL, - NULL); - bSuccess = false; - } - } - } - - if (bSuccess) - { - // add Key ID and the creating KMA IP address to the DU cache - CDataUnitCache* pDataUnitCache = (CDataUnitCache*) i_pProfile->m_pDataUnitCache; - - if (i_pProfile->m_iClusterDiscoveryFrequency != 0) // load balancing enabled - { - bSuccess = pDataUnitCache->Insert( - NULL, - 0, - o_pKey->m_acKeyID, - KMS_KEY_ID_SIZE, - pLoadBalancer->GetApplianceNetworkAddress(iIndex)); - } - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - RETURN(KMS_AGENT_STATUS_OK); - } - - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, - bClientAESKeyWrapSetupError ? - CAgentLoadBalancer::AES_KEY_WRAP_SETUP_ERROR : iIndex)); -} - -extern "C" -void KMSAgent_FreeArrayOfKeys ( - KMSAgent_ArrayOfKeys* i_pArrayOfKeys) -{ -#if defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_FreeArrayOfKeys); -#endif - if (!i_pArrayOfKeys) - { - return; - } - - // free memory for all information groups - if (i_pArrayOfKeys->m_pKeys) - { - free(i_pArrayOfKeys->m_pKeys); - } - - free(i_pArrayOfKeys); -} - -/*--------------------------------------------------------------------------- - * Function: KMSAgent_CreateAuditLog - * - *--------------------------------------------------------------------------*/ -extern "C" -KMS_AGENT_STATUS KMSAgent_CreateAuditLog ( - KMSClientProfile* i_pProfile, - enum KMS_AUDIT_LOG_RETENTION i_iRetention, - enum KMS_AUDIT_LOG_CONDITION i_iCondition, - int i_bIssueAlert, - utf8cstr i_pMessage) -{ - bool bSuccess = true; -#ifdef DEBUG_TIMING - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE(trace, KMSAgent_CreateAuditLog); -#endif - - // START_STACK_CHECK; - - if (!i_pProfile) - { - Log(AUDIT_CLIENT_AGENT_CREATED_AUDIT_LOG_INVALID_PARAMETERS, - NULL, - NULL, - "Profile arg"); - - // END_STACK_CHECK; - - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - // check arguments - if (i_iRetention > KMS_AUDIT_LOG_SHORT_TERM_RETENTION) - { - Log(AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_INVALID_PARAMETERS, - NULL, - NULL, - "Retention arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (i_iCondition > KMS_AUDIT_LOG_WARNING_CONDITION) - { - Log(AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_INVALID_PARAMETERS, - NULL, - NULL, - "Condition arg"); - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - - if (!i_pMessage || (strlen(i_pMessage) <= 0)) - { - Log(AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_INVALID_PARAMETERS, - NULL, - NULL, - "Message arg"); - // END_STACK_CHECK; - RETURN(KMS_AGENT_STATUS_INVALID_PARAMETER); - } - if (!KMSClient_ProfileLoaded(i_pProfile)) - { - // END_STACK_CHECK; - RETURN(KMS_AGENT_STATUS_PROFILE_NOT_LOADED); - } - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - struct soap* pstSoap = (struct soap*) i_pProfile->m_pvSoap; - - // Create Audit Log - - KMS_Agent::KMS_Agent__CreateAuditLogResponse oResponse; - - CAgentLoadBalancer *pLoadBalancer = - (CAgentLoadBalancer *) i_pProfile->m_pAgentLoadBalancer; - - int iIndex = pLoadBalancer->Balance(); - if (iIndex >= 0) - { - do - { - const char* sURL = pLoadBalancer-> - GetHTTPSURL(iIndex, i_pProfile->m_iPortForAgentService); - strncpy(i_pProfile->m_sURL, sURL, sizeof(i_pProfile->m_sURL)); - i_pProfile->m_sURL[sizeof(i_pProfile->m_sURL)-1] = '\0'; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__CreateAuditLog( - pstSoap, - sURL, - NULL, - (enum KMS_Agent::KMS_Agent__AuditLogRetention)i_iRetention, - (enum KMS_Agent::KMS_Agent__AuditLogCondition)i_iCondition, - i_bIssueAlert ? true : false, - i_pMessage, - oResponse) == SOAP_OK; - - - if (!bSuccess) - { - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - - GetSoapFault(sSoapFaultMsg, pstSoap); - GetPeerNetworkAddress(sKmaAddress, pstSoap); - - iIndex = pLoadBalancer->FailOver(iIndex, pstSoap); - - LogError(i_pProfile, AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - } - else - { - pLoadBalancer->UpdateResponseStatus(iIndex); - } - } - while (iIndex >= 0 && (!bSuccess)); - } - else - { - bSuccess = false; - } - - // free allocated memory for output if error condition - // Clean up SOAP - - soap_destroy(pstSoap); - soap_end(pstSoap); - - if (bSuccess) - { - // END_STACK_CHECK; - RETURN(KMS_AGENT_STATUS_OK); - } - - // END_STACK_CHECK; - RETURN(KMSAgent_GetLastStatusCode(i_pProfile, iIndex)); -} - -#ifdef KMSUSERPKCS12 -/* - * This function allows the user to change the PIN on the PKCS12 - * file that holds the clients private key and cert. - */ -extern "C" -KMS_AGENT_STATUS KMSAgent_ChangeLocalPWD( - KMSClientProfile* i_pProfile, - utf8cstr const i_pOldPassphrase, - utf8cstr const i_pNewPassphrase) -{ - CCertificate *pCert; - CPrivateKey *pKey; - bool bSuccess; - - pCert = new CCertificate; - pKey = new CPrivateKey; - - bSuccess = GetPKCS12CertAndKey(i_pProfile, i_pOldPassphrase, - pCert, pKey); - if (!bSuccess) - return(KMSAgent_GetLastStatusCode(i_pProfile, 0)); - - bSuccess = StoreAgentPKI(i_pProfile, pCert, pKey, i_pNewPassphrase); - if (!bSuccess) - return(KMSAgent_GetLastStatusCode(i_pProfile, 0)); - - return (KMS_AGENT_STATUS_OK); -} -#endif /* KMSUSERPKCS12 */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgent.h --- a/usr/src/lib/libkmsagent/common/KMSAgent.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1163 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** @file KMSAgent.h - * @defgroup EncryptionAgent Encryption Agent API - * - * The Agent API is used to communicate with the KMS Appliance for the - * purpose of registering storage devices, obtaining device keys, and - * receiving notifications of storage device events such as destruction. - * - */ -#ifndef KMS_AGENT_H -#define KMS_AGENT_H - -#include "KMSClientProfile.h" - -/*--------------------------------------------------------------------------- - * The following ifdef block is the standard way of creating macros which - * make exporting from a DLL simpler. All files within this DLL are compiled - * with the KMS_AGENT_EXPORT symbol defined on the command line. this symbol - * should not be defined on any project that uses this DLL. This way any - * other project whose source files include this file see KMS Agent API functions - * as being imported from a DLL, wheras this DLL sees symbols defined with - * this macro as being exported. - *--------------------------------------------------------------------------*/ -#ifdef KMS_AGENT_EXPORT -#define KMS_AGENT_API __declspec(dllexport) -#else -#define KMS_AGENT_API __declspec(dllimport) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/*--------------------------------------------------------------------------- - * Return Codes - *--------------------------------------------------------------------------*/ - -/** - * The status type returned on API calls - */ -typedef int KMS_AGENT_STATUS; - -/** - * successful status - */ -#define KMS_AGENT_STATUS_OK 0 - -/* error status values */ -/** - * generic error is a catch all for a wide variety of errors, see the specific - * entry in the audit log for the details. In general, the client API will return - * one of the specific status codes. - */ -#define KMS_AGENT_STATUS_GENERIC_ERROR 100 - -/** - * insufficient memory for the agent library to complete the request - */ -#define KMS_AGENT_STATUS_NO_MEMORY 102 - -/** - * parameter error, invalid input - */ -#define KMS_AGENT_STATUS_INVALID_PARAMETER 103 - -/** - * an API call was made before the profile was loaded - */ -#define KMS_AGENT_STATUS_PROFILE_NOT_LOADED 104 - -/** - * upon receipt of a key the callout function returned an error - */ -#define KMS_AGENT_STATUS_KEY_CALLOUT_FAILURE 105 - -/** - * the specified profile failover attempts have been exceeded or no KMAs are available within the cluster - */ -#define KMS_AGENT_STATUS_KMS_UNAVAILABLE 106 - -/** - * the KMS does not have any keys in the READY state, this is a KMS issue that requires attention - * from a KMS administrator. - */ -#define KMS_AGENT_STATUS_KMS_NO_READY_KEYS 107 - -/** - * the FIPS 140-2 known answer test (KAK) failed for AES Key wrap. - */ -#define KMS_AGENT_STATUS_FIPS_KAT_AES_KEYWRAP_ERROR 108 - -/** - * #FIPS_MODE was specified on #KMSAgent_LoadProfile - * but no FIPS compatible KMAs are currently - * available. Also, it may be that no FIPS compatible KMAs have been - * configured within the KMS. - */ -#define KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE 109 - -/** - * the profile was already successfully loaded and should be unloaded - * before attempting to load it again - */ -#define KMS_AGENT_STATUS_PROFILE_ALREADY_LOADED 110 - -/** - * the FIPS 140-2 known answer test (KAK) failed for AES ECB. - */ -#define KMS_AGENT_STATUS_FIPS_KAT_AES_ECB_ERROR 111 - -/** - * the FIPS 140-2 known answer test (KAK) failed for HMAC-SHA1. - */ -#define KMS_AGENT_STATUS_FIPS_KAT_HMAC_SHA1_ERROR 112 - -/* - * SOAP Sender Errors - client errors associated with a KMS SOAP service - */ - -/** - * the following conditions can result in access denied being returned by the KMSAgent Soap service: - *
    - *
  • Agent is not enabled on the KMS - *
  • Invalid DataUnitID or DataUnit does not exist - *
  • Invalid ExternalUniqueID or DataUnit does not exist with specified ID - *
  • Invalid ExternalTag - *
  • Invalid KeyID - *
  • Invalid KeyGroup or KeyGroup does not exist - *
  • The Agent ID is not recognized as an agent by the KMS, i.e. the agent may not exist or the - * ID represents another kind of entity. - *
  • No KeyGroup specified and the Agent is not configured to have a default KeyGroup - *
  • Agent does not have access to the specified KeyGroup - *
- * to prevent leakage of information the specific details for access being denied are not - * disclosed. Audit log entries at the KMS can be used to determine specific reasons for - * access being denied. - */ -#define KMS_AGENT_STATUS_ACCESS_DENIED 200 - -/** - * This error status is only returned when received from the KMS and the transaction - * timeout has been exceeded. - */ -#define KMS_AGENT_STATUS_SERVER_BUSY 201 - -/** - * a data unit already exists with the specified external unique identifier - */ -#define KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS 202 - -/** - * The external unique ID specified was found to exist but the corresponding - * DataUnitID did not exist. - */ -#define KMS_AGENT_STATUS_DATA_UNIT_ID_NOT_FOUND_EXTERNAL_ID_EXISTS 203 - - -/** - * The specified key has been destroyed or is unknown to the KMS - */ -#define KMS_AGENT_STATUS_KEY_DOES_NOT_EXIST 204 - -/** - * The requested key has been destroyed. - */ -#define KMS_AGENT_STATUS_KEY_DESTROYED 205 - -/** - * The key received from a KMA encountered an error during AES Key Unwrapping - */ -#define KMS_AGENT_AES_KEY_UNWRAP_ERROR 206 - -/** - * An error occurred during establishment of an AES Key-Encryption Key - */ -#define KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR 207 - -/* - * Failed to decrypt the client private key data file due to incorrect PIN - */ -#define KMS_AGENT_LOCAL_AUTH_FAILURE 208 - -/** - * supported key types - */ -enum KMS_KEY_TYPE -{ - /** - * AES 256 key type - */ - KMS_KEY_TYPE_AES_256 -}; - -/** - * This enumerator type defines the various Key States. - */ -enum KMS_AGENT_KEY_STATE -{ - KMS_KEY_STATE_GENERATED = 0, - KMS_KEY_STATE_READY, - - /** - * A key in this state can be used for both encryption and decryption. - * A key is placed into this state when it is assigned. The assignment is done when an encryption agent requests a new key be created. - */ - KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS, - - /** - * A key in this state can be used for decryption but not encryption. When an agent determines that none of the keys available to - * it (e.g., for a specific data unit that is being read or written) are in the protect-and-process state, it should create a new key. - * Keys transition from protect-and-process to process only when the encryption period for the key expires. - */ - KMS_KEY_STATE_ACTIVE_PROCESS_ONLY, - - /** - * The key has passed its cryptoperiod but may still be needed to process (decrypt) information. Auditable events are generated - * when keys in this state are provided to the agent. - */ - KMS_KEY_STATE_DEACTIVATED, - - /** - * Keys are compromised when they are released to or discovered by an unauthorized entity. - * Compromised keys should not be used to protect information, but may be used to process information. - * Auditable events are generated - * when keys in this state are provided to the agent. - */ - KMS_KEY_STATE_COMPROMISED, - - KMS_KEY_STATE_DESTROYED_INCOMPLETE, - KMS_KEY_STATE_DESTROYED_COMPLETE, - KMS_KEY_STATE_DESTROYED_COMPROMISED_INCOMPLETE, - KMS_KEY_STATE_DESTROYED_COMPROMISED_COMPLETE - -}; - -/*--------------------------------------------------------------------------- - * Data Unit State - *--------------------------------------------------------------------------*/ - -/** - * this enumeration defines the DataUnit states - */ -enum KMS_AGENT_DATA_UNIT_STATE -{ - /** - * When a data unit has been created, but has not yet had any keys created it will be in "no key" state. - * This should be a short, transient condition that will be exited as soon as a key has been created. - */ - KMS_DATA_UNIT_STATE_NO_KEY = 0, - - /** - * Normal is a substate of readable. In this state, a data unit has at least one protect-and-process state key that can be used to encrypt data. - * The data unit is therefore writable. - */ - KMS_DATA_UNIT_STATE_READABLE_NORMAL, - - /** - * Needs rekey is a substate of readable. In this state, the data unit has no protect-and-process keys. - * Data should not be encrypted and written to the data unit unless the data unit is rekeyed and a new, active key is assigned. - * Its the responsibility of the agent to avoid using a key that is not in protect-and-process state for encryption. - * The data unit may have keys that are in process only, deactivated, or compromised state. Any of these keys can be used for decryption. - */ - KMS_DATA_UNIT_STATE_READABLE_NEEDS_REKEY, - - /** - * When all of the keys for a data unit are destroyed, the data unit is shredded. The data unit cannot be read or written. - * However, a new key can be created for the data unit. This will return the data unit to normal state, allowing it to be read and written. - */ - KMS_DATA_UNIT_STATE_SHREDDED -}; - -/** - * This enumeration type defines Audit Log Retention values - */ -enum KMS_AUDIT_LOG_RETENTION -{ - /** - * specifies that an audit log entry should have long term retention - */ - KMS_AUDIT_LOG_LONG_TERM_RETENTION = 0, - /** - * specifies that an audit log entry should have medium term retention - */ - KMS_AUDIT_LOG_MEDIUM_TERM_RETENTION, - /** - * specifies that an audit log entry should have short term retention - */ - KMS_AUDIT_LOG_SHORT_TERM_RETENTION -}; - -/** - * This enumeration type defines Audit Log Condition values - */ -enum KMS_AUDIT_LOG_CONDITION -{ - /** - * specifies that an audit log entry should should indicate a success condition - */ - KMS_AUDIT_LOG_SUCCESS_CONDITION = 0, - - /** - * specifies that an audit log entry should should indicate an error condition - */ - KMS_AUDIT_LOG_ERROR_CONDITION, - - /** - * specifies that an audit log entry should should indicate a warning condition - */ - KMS_AUDIT_LOG_WARNING_CONDITION -}; - -/** - * supported security modes - */ -enum KMS_SECURITY_MODE -{ - /** - * agent will work with any level of KMA - */ - DEFAULT_MODE = 0, - - /** - * agent will only communicate with KMAs supporting FIPS 140-2 so that - * keys are encrypted at the KMA using AES Key Wrap. - */ - FIPS_MODE -}; - -/*--------------------------------------------------------------------------- - * API Input/Output Data Structures - *--------------------------------------------------------------------------*/ -/** - * typedef for descriptions used in various places within the API - */ -typedef utf8char DESCRIPTION [KMS_MAX_DESCRIPTION+1]; - -/** - * typedef for key group ID - */ -typedef utf8char KEY_GROUP_ID[KMS_MAX_ID+1]; - -/** - * typedef for the Key Group struct - */ -typedef struct KMSAgent_KeyGroup KMSAgent_KeyGroup; - -/** \struct KMSAgent_KeyGroup - * a Key Group with its ID and description - */ -struct KMSAgent_KeyGroup -{ - /** - * the unique ID of the KeyGroup - */ - KEY_GROUP_ID m_acKeyGroupID; - - /** - * the description of the KeyGroup - */ - DESCRIPTION m_acDescription; -}; - -/** - * An array of Key Groups - */ -typedef struct KMSAgent_ArrayOfKeyGroups KMSAgent_ArrayOfKeyGroups; - -/** \struct KMSAgent_ArrayOfKeyGroups - * An array of Key Groups - */ -struct KMSAgent_ArrayOfKeyGroups -{ - /** - * pointer to an array of Key Groups - */ - KMSAgent_KeyGroup* m_pKeyGroups; - - /** - * the number of Key Groups in the array - */ - int m_iSize; -}; - - -/** - * typedef for a Key struct - */ -typedef struct KMSAgent_Key KMSAgent_Key; - -/** \struct KMSAgent_Key - * key and its associated properites: KeyID, state, type, lenth, KeyGroup and the Key value - */ -struct KMSAgent_Key -{ - /** - * the unique ID of the key - */ - KEY_ID m_acKeyID; - - /** - * the state of the Key - */ - enum KMS_AGENT_KEY_STATE m_iKeyState; - - /** - * the type of the key, e.g. AES_256 - */ - enum KMS_KEY_TYPE m_iKeyType; - - /** - * the unique ID of the KeyGroup - */ - KEY_GROUP_ID m_acKeyGroupID; - - /** - * the key in plaintext. - */ - KEY m_acKey; - - /** - * length of #m_acKey - */ - int m_iKeyLength; -}; - -/** - * typedef for the External Unique ID - */ -typedef unsigned char EXTERNAL_UNIQUE_ID [KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE]; - -/** - * typedef for the Data Unit ID - */ -typedef unsigned char DATA_UNIT_ID [KMS_DATA_UNIT_ID_SIZE]; - -/** - * typedef for the External Tag - */ -typedef utf8char EXTERNAL_TAG [KMS_MAX_EXTERNAL_TAG+1]; - -/** - * typedef for aData Unit structure. - */ -typedef struct KMSAgent_DataUnit KMSAgent_DataUnit; - -/** \struct KMSAgent_DataUnit - * struct for a DataUnit and its associated properties: DataUnitID, external unique ID, - * external tag, description and state. Data units are associated with zero or more keys. - */ -struct KMSAgent_DataUnit -{ - /** - * the unique DataUnit ID provided by the KMS - */ - DATA_UNIT_ID m_acDataUnitID; - - /** - * a unique external ID for the data unit that is provided by the agent, may be NULL if one is not provided. - * The KMS will enforce the uniqueness of this identifier and not allow multiple data units having the same - * #m_acExternalUniqueID value. - */ - EXTERNAL_UNIQUE_ID m_acExternalUniqueID; - /** - * the length in bytes of the #m_acExternalUniqueID field that represents the - * ID. The length - * must be less than or equal to #KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE - */ - int m_iExternalUniqueIDLength; - - /** - * an external tag representing information pertinent to the data unit, for example a volume serial number - */ - EXTERNAL_TAG m_acExternalTag; - - /** - * a description of the data unit - */ - DESCRIPTION m_acDescription; - - /** - * the state of the DataUnit - */ - enum KMS_AGENT_DATA_UNIT_STATE m_iDataUnitState; - -}; - -/** - * typedef for a list of keys - */ -typedef struct KMSAgent_ArrayOfKeys KMSAgent_ArrayOfKeys; - -/** \struct KMSAgent_ArrayOfKeys - * struct for an array of keys - */ -struct KMSAgent_ArrayOfKeys -{ - /** - * keys are in chronological order based upon key creation date. However, - * when page offset argument to #KMSAgent_RetrieveDataUnitKeys - * is 0 the first key in the array will be the key in the - * #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS. - */ - KMSAgent_Key* m_pKeys; - - /** - * the number of keys in the list - */ - int m_iSize; -}; - -/** - * @return the version string for the KMS Agent Library - */ -const char * KMSAgent_GetVersion(); - -/** - * - * This function initializes the KMS Agent API library. It - * should be called before any other functions are invoked. Internally, - * sets up the SSL library and Logging module. - * - * @param i_pWorkingDirectory Working directory of the program which uses the - * library. Default is "." if NULL is passed. - * @param i_bUseFileLog: True(1) if errors should go to a log file in the working directory. - * If false(0) then errors will not be logged to a file. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_GENERIC_ERROR if library initialization fails - */ -KMS_AGENT_STATUS KMSAgent_InitializeLibrary( - const utf8cstr i_pWorkingDirectory, - int i_bUseFileLog ); - -/** - * This function exercises FIPS 140-2 Known Answer Tests for certified algorithms - * used in the agent toolkit. This function should only be called once and may - * be called prior to #KMSAgent_InitializeLibrary. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_FIPS_KAT_AES_KEYWRAP_ERROR - * @return #KMS_AGENT_STATUS_FIPS_KAT_AES_ECB_ERROR - * @return #KMS_AGENT_STATUS_FIPS_KAT_HMAC_SHA1_ERROR - */ -KMS_AGENT_STATUS KMSAgent_KnownAnswerTests(); - -/** - * This function finalizes the KMS Agent API library. It should - * be called when the library is not needed by the program. Internally it - * cleans up the SSL library and Logging module. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_GENERIC_ERROR if library finalization fails - * - */ -KMS_AGENT_STATUS KMSAgent_FinalizeLibrary(); - -/** - * This function can be used to get the last error message when - * an API function encounters an error. These error messages also - * are written to the log, if file logging was enabled during library - * initialization. - * - * @param i_pProfile an initialized #KMSClientProfile; the failed - * function must have used this profile. - * @return the pointer to the last error message or NULL - * - */ -utf8cstr KMSAgent_GetLastErrorMessage( - KMSClientProfile* i_pProfile ); - - - /** - * Get the cluster information by calling the KMS_Discovery service using the KMA specified in the - * profile, no load balancing will occur. If discovery to this KMA fails then discovery will be - * attempted using previously retrieved cluster information. - * - * If #KMSAgent_LoadProfile was called with an IPv6 address for - * the i_pInitialApplianceAddress argument then the o_pClusterEntryArray will contain - * IPv6 addresses instead of IPv4 addresses for each KMA that has an IPv6 address. - * @see #KMSAgent_LoadProfile and #KMSAgent_SelectAppliance. - * - * If the size of the cluster returned by the KMS_Discovery servic exceeds i_iClusterEntryArraySize - * then the KMA list is filtered to contain the - * first i_iClusterEntryArraySize KMAs that meet the profile's FIPS setting, agent site and are reported as responding by the - * KMS discover cluster response. - * - * @param i_pProfile a pointer to an initialized #KMSClientProfile structure - * @param i_iEntitySiteIDSize the buffer size of the entity site ID including null terminator - * (should be greater than #KMS_MAX_ENTITY_SITE_ID ) - * @param i_iClusterEntryArraySize the array size for cluster entries (must be less than or equal to #KMS_MAX_CLUSTER_NUM ) - * @param o_pEntitySiteID a buffer allocated by the caller to store the agent's (aka entity) Site ID - * @param o_pApplianceNum the returned number of appliances in the cluster - * @param o_pClusterEntryArray a buffer allocated by the caller to store the array of cluster entries - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ - KMS_AGENT_STATUS KMSAgent_GetClusterInformation( - KMSClientProfile * const i_pProfile, - int i_iEntitySiteIDSize, - int i_iClusterEntryArraySize, - utf8cstr const o_pEntitySiteID, - int * const o_pApplianceNum, - KMSClusterEntry * const o_pClusterEntryArray); - -/** - * Specifies the Key Management Appliance to be used - * for retrieving cluster information. - * - * @param i_pProfile a pointer to an initialized #KMSClientProfile - * structure - * @param i_pApplianceAddress the IP address of the appliance. IPv6 addresses - * must be enclosed in brackets, [], see #KMSAgent_LoadProfile. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * - */ -KMS_AGENT_STATUS KMSAgent_SelectAppliance( - KMSClientProfile* const i_pProfile, - utf8cstr const i_pApplianceAddress ); - -/** - * Load profile handles both agent enrollment with the KMS and post enrollment setup. - *

- * Enrollment Behavior - *
- * When a passphrase is supplied enrollment, or reenrollment, with a KMS cluster is attempted in order - * to establish a mutual trust relationship. Enrollment occurs with the KMA in the cluster specified - * by i_pApplianceAddress. - *

- * The KMS CA web service is used for CA certificate retrieval prior to - * invoking the KMS Certificate web service. Certficate retrieval via these services - * uses the i_pApplianceAddress for enrollment. Cluster discovery is then performed to - * identify the set of KMAs within the cluster. - * Successful enrollment results in - * persistent storage of the CA X.509 certificate, agent X.509 certificate and private key. - *

- * Once enrolled successfully the KMS - * will then disable usage of the agent's passphrase for enrollment as a security precaution. - * Subsequent enrollment will require a new passphrase. - *

- * Post Enrollment Behavior - *
- * When a passphrase is not provided a profile is assumed to exist and the library profile structure - * is initialized from persistent storage with the configuration settings(agent ID, - * KMA service port numbers, KMA Address, transaction timeout, discovery frequency, transaction timeout - * and failover limit), cluster information(agent's site ID and KMA cluster information and KMA status) and - * enrollment items: the CA certificate, Agent Certificate and agent private key. - *

- * Finally, cluster discovery is performed(unless disabled), and a load balancer is initialized - * for balancing transactions across KMAs within the - * cluster and for handling transaction failover scenarios. - * Subsequent API calls using the profile will invoke cluster discovery at the frequency specified - * by iClusterDiscoveryFrequency. Updated discovery information is persisted with the - * profile. The load balancer maintains affinity to KMAs within the same site as the agent for - * agent transactions unless an error requires failover - * to another KMA in the cluster. An agent's site ID may also be updated by a discovery - * operation. - * - * @param io_pProfile a pointer to a #KMSClientProfile buffer allocated by the caller - * @param i_pProfileName the profile name - * @param i_pAgentID Optional. For a new profile the encryption agent's ID is required. - * @param i_pPassphrase Optional. For a new profile the encryption agent's passphrase is required. This passphrase - * may only be used once for a successful retrieval of the Certificate and agent private key. - * @param i_pInitialApplianceAddress the initial IP Address of an Appliance in the KMS Cluster that is reachable by this agent. If - * enrollment has previously occurred specification of an initial IP address that is not - * a member of the profile's cluster information will force the cluster information - * to be deleted and discovery to be performed with the new IP address. - * An IPv6 address may be supplied but must be enclosed with brackets, [], in accordance - * with RFC 2396, "Format for Literal IPv6 Addresses in URL's". Supplying an IPv6 address will cause - * the agent library to utilize KMA IPv6 addresses over IPv4 addresses when they are available, - * otherwise IPv4 KMA addresses will be used. - * @param i_iTransactionTimeout the timeout setting for a transaction in seconds, must be a positive value. - * @param i_iFailOverLimit Failed KMA transactions will be retried up to this limit. Once this limit - * has been reached API calls will return #KMS_AGENT_STATUS_KMS_UNAVAILABLE. - * Specify -1 for unlimited failover attempts, 0 for no failover. The worst case completion time for - * an API call is approximately equal to i_iFailOverLimit * i_iTransactionTimeout. - * - * @param i_iClusterDiscoveryFrequency - * frequency of calling cluster discovery service - * in seconds (use 0 to disable load balancing and periodic cluster discovery) - * @param i_eKMSmode specifies the KMS operational mode that the - * agent should enforce. Setting this to #FIPS_MODE - * causes the agent to only communicate with KMAs in the - * cluster that support AES key wrapping for key requests. - * This is not a persisted setting and is only applicable - * to the current session. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_PROFILE_ALREADY_LOADED - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ -KMS_AGENT_STATUS KMSAgent_LoadProfile( - KMSClientProfile* const io_pProfile, - utf8cstr const i_pProfileName, - utf8cstr const i_pAgentID, - utf8cstr const i_pPassphrase, - utf8cstr const i_pInitialApplianceAddress, - int i_iTransactionTimeout, - int i_iFailOverLimit, - int i_iClusterDiscoveryFrequency, - int i_eKMSmode ); - - -/** - * Destroy the profile information in memory, the agent's profile configuration, - * cluster information, certificate and - * private key are retained in persistant storage. - * - * @param i_pProfile a pointer to an initialized KMSClientProfile - * structure. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * - */ -KMS_AGENT_STATUS KMSAgent_UnloadProfile( - KMSClientProfile* const i_pProfile ); - -/** - * Delete the profile information from persistent storage. The agent's profile configuration, - * cluster information, certificate and - * private key are discared, see #KMSAgent_LoadProfile for how to initialize - * the profile again. The profile should be unloaded prior to making this call. - * - * @param i_pProfileName the profile name - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - */ -KMS_AGENT_STATUS KMSAgent_DeleteProfile( - utf8cstr i_pProfileName ); - -/** - * Fetch the key groups this agent is allowed to access. The caller should invoke #KMSAgent_FreeArrayOfKeyGroups - * to release the allocated memory resources for the array. Up to #KMS_MAX_LIST_KEY_GROUPS key groups will be - * returned. - * - * @param i_pProfile an initialized #KMSClientProfile - * @param o_ppKeyGroups a buffer allocated by this routine for the array of Key Groups and individual key groups - * that this agent is allowed to access - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ -KMS_AGENT_STATUS KMSAgent_ListKeyGroups( - KMSClientProfile* const i_pProfile, - KMSAgent_ArrayOfKeyGroups** const o_ppKeyGroups ); - -/** - * Helper function which frees memory allocated for the output - * to #KMSAgent_ListKeyGroups. - * - * @param i_pArrayOfKeyGroups a pointer to #KMSAgent_ArrayOfKeyGroups - * - * @return void - * - */ -void KMSAgent_FreeArrayOfKeyGroups( - KMSAgent_ArrayOfKeyGroups* i_pArrayOfKeyGroups ); - -/** - * Creates a Key for the specified data unit. If a data unit is provided then the key will be associated with - * the data unit. The type of key created is dictated by the KMS key policy for the key group. This policy is set up by KMS - * administrators to be compatible with agents associated with the key group. - * If KeyGroup is provided then the new key is associated with the specified KeyGroup, otherwise the agent's - * default KeyGroup is associated with the key. - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pDataUnit Optional. a pointer to a data unit to be associated with the key, if known. - * @param i_pKeyGroupID Optional, the KeyGroup ID to be assigned to the new Key, if known. Pass NULL - * if unknown and the new key will be associated with the agent's default key group - * @param o_pKey A pointer to a buffer for returning the new key and key associated data. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_KEY_CALLOUT_FAILURE - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_KMS_NO_READY_KEYS - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - * @return #KMS_AGENT_AES_KEY_UNWRAP_ERROR - * @return #KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR - */ -KMS_AGENT_STATUS KMSAgent_CreateKey( - KMSClientProfile* const i_pProfile, - const KMSAgent_DataUnit* const i_pDataUnit, - KEY_GROUP_ID const i_pKeyGroupID, - KMSAgent_Key* const o_pKey); - -/** - * Creates a DataUnit with the specified external unique id and external tag. - * - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pExternalUniqueID Optional. A unique data unit identifier to be associated with - * the data unit. Uniqueness is enforced by the KMS. See also #KMSAgent_RetrieveDataUnit. - * @param i_iExternalUniqueIDIDLen Length in bytes of the external unique identifier. If - * i_pExternalUniqueID is NULL then this field is ignored, otherwise a positive length must be provided. - * @param i_pExternalTag Optional, but recommended. Pointer to an External Tag for the data unit, e.g. a volume serial number. - * @param i_pDescription Optional, a textual description of the data unit. - * @param o_pDataUnit a pointer to a DataUnit buffer where - * data unit information is returned - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE -*/ -KMS_AGENT_STATUS KMSAgent_CreateDataUnit( - KMSClientProfile* const i_pProfile, - const unsigned char * i_pExternalUniqueID, - int i_iExternalUniqueIDIDLen, - utf8cstr const i_pExternalTag, - utf8cstr const i_pDescription, - KMSAgent_DataUnit* const o_pDataUnit); - -/** - * The agent may use this function to inform the KMS that the DataUnit has, or will be, overwritten. - * The KMS will remove the association from the specified DataUnit to all its keys, excluding its key - * in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS state. By utilizing this API, agent's can help keep the - * number of keys returned by #KMSAgent_RetrieveDataUnitKeys to just the keys being used on the Data Unit. - * - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pDataUnit A pointer to the data unit - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ -KMS_AGENT_STATUS KMSAgent_DisassociateDataUnitKeys( - KMSClientProfile* const i_pProfile, - const KMSAgent_DataUnit* const i_pDataUnit); - - -/** - * retrieve a key by the Key's ID, optionally specifying the Data Unit and KeyGroup to be - * associated with the key. Supplying the Data Unit information allows the KMS to add an - * association between the Key and the Data Unit. The assumption being made is that the key being - * retrieved has been used on the specified Data Unit and needs to be associated with it. This - * side affect allows the KMS to build up its knowledge of key usage as it relies upon agents - * for discovering and reporting how keys are being used on Data Units. For example, when keys - * are imported into a KMS the information associating keys with DataUnits may not be provided, - * consequently the KMS is unaware of what DataUnits were encrypted with a particular key. - * - * @param i_pProfile an initialized KMSClientProfile - * @param i_pKeyID The ID of the Key being requested - * @param i_pDataUnit Optional. If non-NULL, the KMS will verify that an association exists between the key and the Data Unit and create - * the association if it is missing. - * @param i_pKeyGroupID Optional. If non-NULL, and the key is not already associated with a KeyGroup, then the KMS will associate the key with the specified KeyGroup. - * @param o_pKey A pointer to a buffer allcoated by the caller for returning the new key and key associated data. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_KEY_CALLOUT_FAILURE - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KEY_DOES_NOT_EXIST - * @return #KMS_AGENT_STATUS_KEY_DESTROYED - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - * @return #KMS_AGENT_AES_KEY_UNWRAP_ERROR - * @return #KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR - */ -KMS_AGENT_STATUS KMSAgent_RetrieveKey( - KMSClientProfile* const i_pProfile, - const unsigned char * const i_pKeyID, - const KMSAgent_DataUnit* const i_pDataUnit, - utf8cstr const i_pKeyGroupID, - KMSAgent_Key* const o_pKey); - -/** - * Retrieve a Data Unit by its data unit identifier. - * - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pDataUnitID the data unit ID by which retrieval will be performed - * @param i_pExternalUniqueID Optional, a unique data unit identifier to be associated with - * the data unit. Uniqueness is enforced by the KMS. - * @param i_iExternalUniqueIDLen Length in bytes of the external unique identifier, must be positive. If - * i_pExternalUniqueID is NULL then this field is ignored. - * @param i_pExternalTag Optional, but recommended. Pointer to a data unit external tag, e.g. volser - * @param i_pDescription Optional, a textual description of the data unit. - * @param o_pDataUnit a pointer to a DataUnit buffer allocated by the caller where - * data unit information is returned - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ -KMS_AGENT_STATUS KMSAgent_RetrieveDataUnit( - KMSClientProfile* const i_pProfile, - const unsigned char * const i_pDataUnitID, - const unsigned char * const i_pExternalUniqueID, - int i_iExternalUniqueIDLen, - utf8cstr const i_pExternalTag, - utf8cstr const i_pDescription, - KMSAgent_DataUnit* const o_pDataUnit); - -/** - * Retrieve a Data Unit by its external unique identifier. - * If the KMS does not contain a data unit with the specified unique identifier then a data unit will - * be created. The new data unit will contain the external unique identifier and the external tag, if - * provided. - * - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pExternalUniqueID A unique data unit identifier to be associated with - * the data unit. Uniqueness is enforced by the KMS. - * @param i_iExternalUniqueIDLen Length in bytes of the external unique identifier, must be positive. - * @param i_pExternalTag Optional, but recommended. Pointer to a data unit external tag, e.g. volser - * @param i_pDescription Optional, a textual description of the data unit. - * @param o_pDataUnit a pointer to a DataUnit buffer allocated by the caller where - * data unit information is returned - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ -KMS_AGENT_STATUS KMSAgent_RetrieveDataUnitByExternalUniqueID( - KMSClientProfile* const i_pProfile, - const unsigned char* const i_pExternalUniqueID, - int i_iExternalUniqueIDLen, - utf8cstr const i_pExternalTag, - utf8cstr const i_pDescription, - KMSAgent_DataUnit* const o_pDataUnit); - -/** - * retrieve keys assigned to a Data Unit. - * Agents should consult the state of each key that is returned and only - * use the key in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS state for encryption. The agent service - * attempts to return the most recently created key in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS state - * as the first key in the list when a i_pKeyID is not specified. This cannot be guaranteed as - * there may not be a key in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS state for the specified - * data unit. The rest of the keys returned are sorted in ascending order by the time in which - * they were created on the server. - * #KMSAgent_DisassociateDataUnitKeys may be used to manage the - * size of the key list associated with a data unit. - * The i_iPageSize, i_iPageOffset and o_piKeysRemaining parameters may be used for retrieving - * subsets of the list. For the i_pKeyID argument see the parameter's description. - * Callers should invoke#KMSAgent_FreeArrayOfKeys when finished with the buffer of keys. - * - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pDataUnit The Data Unit for which all keys will be retrieved. - * @param i_iPageSize the number of keys to be retrieved, up to #KMS_MAX_PAGE_SIZE. - * @param i_iPageOffset the offset from the start of the data unit's key list. Set this to zero for - * retrieval from the start of the list or if i_pKeyID is non-null. - * When set to zero the first key returned in the list - * will be the most recently created key in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS state. - * @param o_piKeysRemaining a pointer to an integer where the number of keys remaining in the list will be returned - * @param i_pKeyID Optional. If non-null, the caller provides a pointer to a KeyID that is used for - * the retrieval and the list returned begins with the specified data unit's KeyID and up to - * i_iPageSize keys associated with the data unit having an activation date greater than the key - * corresponding to i_pKeyID. The first key in the list is not guaranteed - * to be in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS state. If the specified i_pKeyID - * is not associated with the Data Unit then the behavior is like #KMSAgent_RetrieveKey and - * a single key is returned. - * When non-null the i_iPageOffset - * argument must be 0, these arguments are mutually exclusive. - * @param o_ppKeys a pointer to pointer to a #KMSAgent_ArrayOfKeys struct allocated by this routine for returning the specified number of - * Data Unit's keys and key associated data. Up to i_iPageSize - * keys will be returned. Callers should invoke #KMSAgent_FreeArrayOfKeys - * when finished with the buffer of keys. - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_KEY_CALLOUT_FAILURE - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_KEY_DOES_NOT_EXIST if i_pKeyID does not exist in the KMS. - * @return #KMS_AGENT_STATUS_KEY_DESTROYED if i_pKeyID has been destroyed. - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - * @return #KMS_AGENT_AES_KEY_UNWRAP_ERROR - * @return #KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR - */ -KMS_AGENT_STATUS KMSAgent_RetrieveDataUnitKeys( - KMSClientProfile* const i_pProfile, - const KMSAgent_DataUnit* const i_pDataUnit, - int i_iPageSize, - int i_iPageOffset, - int* const o_piKeysRemaining, - const unsigned char * const i_pKeyID, - KMSAgent_ArrayOfKeys** const o_ppKeys); - -/** - * returns a key in the #KMS_KEY_STATE_ACTIVE_PROTECT_AND_PROCESS for the specified data unit. A new - * key will be created if the data unit does not have a key in the protect and process state or if the - * agent is not authorized to access the key in the protect and process state. - * @param i_pProfile an initialized #KMSClientProfile - * @param i_pDataUnit The Data Unit for which a key in the protect and process state will be returned. - * @param i_pKeyGroupID Optional. If non-NULL and a new key is to be created, the KMS will associate the key with the specified KeyGroup - * @param o_pKey A pointer to a buffer for returning the protect and process key. If the data unit - * is associated with multiple keys in the protect and process state then the - * most recently created protect and process key is returned. - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_NO_MEMORY - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_KEY_CALLOUT_FAILURE - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_KMS_NO_READY_KEYS - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - * @return #KMS_AGENT_AES_KEY_UNWRAP_ERROR - * @return #KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR - */ -KMS_AGENT_STATUS KMSAgent_RetrieveProtectAndProcessKey( - KMSClientProfile* const i_pProfile, - const KMSAgent_DataUnit* const i_pDataUnit, - utf8cstr const i_pKeyGroupID, - KMSAgent_Key* const o_pKey); - -/** - * Helper function which frees memory allocated for the output to #KMSAgent_RetrieveDataUnitKeys. - * @param i_pArrayOfKeys The array of keys to be freed - */ -void KMSAgent_FreeArrayOfKeys( - KMSAgent_ArrayOfKeys* i_pArrayOfKeys); - -/** - * create an entry in the KMS audit log - * - * @param i_pProfile an initialized #KMSClientProfile - * @param i_iRetention the retention of audit log, can be one of: - * #KMS_AUDIT_LOG_LONG_TERM_RETENTION - * #KMS_AUDIT_LOG_MEDIUM_TERM_RETENTION - * #KMS_AUDIT_LOG_SHORT_TERM_RETENTION - * @param i_iCondition the condition of audit log, can be one of: - * #KMS_AUDIT_LOG_SUCCESS_CONDITION - * #KMS_AUDIT_LOG_ERROR_CONDITION - * #KMS_AUDIT_LOG_WARNING_CONDITION - * @param i_bIssueAlert issue alert (SNMP INFORM) for this audit - * @param i_pMessage the message text to be logged - * - * @return #KMS_AGENT_STATUS_OK - * @return #KMS_AGENT_STATUS_INVALID_PARAMETER - * @return #KMS_AGENT_STATUS_PROFILE_NOT_LOADED - * @return #KMS_AGENT_STATUS_GENERIC_ERROR - * @return #KMS_AGENT_STATUS_ACCESS_DENIED - * @return #KMS_AGENT_STATUS_SERVER_BUSY - * @return #KMS_AGENT_STATUS_KMS_UNAVAILABLE - * @return #KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE - */ -KMS_AGENT_STATUS KMSAgent_CreateAuditLog( - KMSClientProfile* i_pProfile, - enum KMS_AUDIT_LOG_RETENTION i_iRetention, - enum KMS_AUDIT_LOG_CONDITION i_iCondition, - int i_bIssueAlert, - utf8cstr i_pMessage ); - - -#ifdef KMSUSERPKCS12 -#include -KMS_AGENT_STATUS KMSAgent_ChangeLocalPWD( - KMSClientProfile* i_pProfile, - utf8cstr const i_pOldPassphrase, - utf8cstr const i_pNewPassphrase); - -#define KMSAGENT_PROFILE_FLAGS uint32_t - -KMS_AGENT_STATUS -KMSAgent_GetProfileStatus( - char *i_pProfileName, - KMSAGENT_PROFILE_FLAGS *flags); - - -#define KMSAGENT_PROFILE_EXISTS_FLAG 0x01 -#define KMSAGENT_CLIENTKEY_EXISTS_FLAG 0x02 -#endif /* KMSUSERPKCS12 */ - -#ifdef __cplusplus -} -#endif - -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentAESKeyWrap.h --- a/usr/src/lib/libkmsagent/common/KMSAgentAESKeyWrap.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* - * \file KMSAgentAESKeyWrap.h - */ - -#ifndef KMSAgentAESKeyWrap_H -#define KMSAgentAESKeyWrap_H - -#ifdef WIN32 -#include -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - /** - * AES Key Wrap (see RFC 3394). No logging is performed since this - * functions must execute in a Known Answer Test prior to - * #KMSAgent_InitializeLibrary. - * @param kek The AES symmetric key-encryption key - * @param kek_len The size, in bytes, of the KEK - * @param pt The plain text key to be AES key wrapped - * @param len The "n" parameter from RFC3394, i.e. the number of 64-bit key data - * blocks. For example, with 256 bit plain text keys n=4. - * @param ct The resulting AES wrapped key. The size of ct needs to allow - * for the 64-bit integrity check value, i.e. sizeof(pt+8) - */ - void aes_key_wrap (const uint8_t *kek, - size_t kek_len, - const uint8_t *pt, - size_t len, - uint8_t *ct); - - /** - * AES Key Unwrap (see RFC 3394). No logging is performed since this - * functions must execute in a Known Answer Test prior to - * #KMSAgent_InitializeLibrary. - * @param kek The AES symmetric key-encryption key - * @param kek_len The size, in bytes, of the KEK - * @param ct The AES wrapped key. - * @param pt The resulting, unwrapped, plain text key. - * @param len The "n" parameter from RFC3394, i.e. the number of 64-bit key data - * blocks. For example, with 256 bit plain text keys n=4. - * @return 0 on success, non-zero otherwise - */ - int aes_key_unwrap (const uint8_t *kek, - size_t kek_len, - const uint8_t *ct, - uint8_t *pt, - size_t len); - -#ifdef __cplusplus -} -#endif - -#endif /* KMSAgentAESKeyWrap_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,317 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentChallenge.cpp - */ - -#include "KMSAgentChallenge.h" -#include "KMSAgentCryptoUtilities.h" -#include "KMSAgentStringUtilities.h" -#include "ApplianceParameters.h" -#include "SYSCommon.h" - -extern "C" int Log2(char* msg1, - char* msg2); - -#ifdef METAWARE -#include "debug.h" -#endif - - -/** - * ComputeChallengeResponse - */ -bool ComputeChallengeResponse( - const unsigned char* i_pAuthenticationSecret, - int i_iAuthenticationSecretLength, - const unsigned char* i_pRootCACertificate, - int i_iRootCACertificateLength, - const unsigned char* i_pAuthenticationChallenge, - int i_iAuthenticationChallengeLength, - unsigned char* o_pAuthenticationChallengeResponse, - int i_iAuthenticationChallengeResponseLength ) -{ - - bool rc; - -#ifdef DEBUG - Log2 ("KMSAgent_LoadProfile::ComputeChallengeResponse", "Entered"); -#endif - FATAL_ASSERT( i_iAuthenticationChallengeResponseLength == HMAC_LENGTH ); - - // challenge response is HMAC-SHA1( RootCACertificate || - // AuthenticationChallenge, AuthenticationSecret ) - const unsigned char* aBuffersToHMAC[2]; - int aBuffersToHMACSize[2]; - - aBuffersToHMAC[0] = i_pRootCACertificate; - aBuffersToHMACSize[0] = i_iRootCACertificateLength; - - aBuffersToHMAC[1] = i_pAuthenticationChallenge; - aBuffersToHMACSize[1] = i_iAuthenticationChallengeLength; - - rc = HMACBuffers( - 2, - aBuffersToHMAC, - aBuffersToHMACSize, - i_pAuthenticationSecret, - i_iAuthenticationSecretLength, - o_pAuthenticationChallengeResponse ); - -#if defined(METAWARE) && defined(DEBUG) - int j=0; - - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "length=%x\n", - i_iAuthenticationSecretLength); - - for (int i=0 ; i< i_iAuthenticationSecretLength; i++) - { - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "%x", - i_pAuthenticationSecret[i]); - } - snprintf(outmsg+j, OUTMSG_SIZE, "\n"); - - Log2("Secret = ",outmsg); -#endif - -#if defined(METAWARE) && defined(DEBUG) - j=0; - - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "length=%x\n", - i_iRootCACertificateLength); - - for (i=0 ; i< i_iRootCACertificateLength; i++) - { - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "%x", - i_pRootCACertificate[i]); - } - snprintf(outmsg+j, OUTMSG_SIZE, "\n"); - - Log2("i_pRootCACertificate = ",outmsg); -#endif - -#if defined(METAWARE) && defined(DEBUG) - j=0; - - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "length=%x\n", - i_iAuthenticationChallengeLength); - - for (i=0 ; i< i_iAuthenticationChallengeLength; i++) - { - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "%x", - i_pAuthenticationChallenge[i]); - } - snprintf(outmsg+j, OUTMSG_SIZE, "\n"); - - Log2("i_pAuthenticationChallenge = ",outmsg); -#endif - -#if defined(METAWARE) && defined(DEBUG) - j=0; - - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "length=%x\n", - i_iAuthenticationChallengeResponseLength); - - for (i=0 ; i< i_iAuthenticationChallengeResponseLength; i++) - { - j+=snprintf(outmsg+j, OUTMSG_SIZE, - "%x", - o_pAuthenticationChallengeResponse[i]); - } - snprintf(outmsg+j, OUTMSG_SIZE, "\n"); - - Log2("o_pAuthenticationChallengeResponse = ",outmsg); -#endif - - return rc; - -#undef __IAM__ -} - -/** - * ComputeEntityHashedPassphraseAndAuthenticationSecret - */ -bool ComputeEntityHashedPassphraseAndAuthenticationSecret( - const char* i_sPassphrase, - char* const o_sHexHashedPassphrase, - int* const o_piAuthenticationHashIterationCount, - char* const o_sHexAuthenticationSecret ) -{ - // HashedPassphrase is SHA1( Passphrase-UTF-8 ) - // Using UTF-8 ensures the same result on different platforms with - // different wide character representations. - // This hashed passphrase value is used to wrap entity - // private key materials. -#if defined(METAWARE) && defined(DEBUG) - Log2 ("KMSAgent_LoadProfile::ComputeEntityHashedPassphraseAndAuthenticationSecret", - "Entered"); -#endif - - unsigned char aHashedPassphrase[HASH_LENGTH]; - - memset(aHashedPassphrase, 0, HASH_LENGTH); - - if ( strlen(i_sPassphrase) > 0 ) - { - if ( !HashBuffer( - (unsigned char*)i_sPassphrase, - strlen(i_sPassphrase), - aHashedPassphrase) ) - { - return false; - } - } - - ConvertBinaryToUTF8HexString( o_sHexHashedPassphrase, - aHashedPassphrase, - HASH_LENGTH ); - - // HexAuthenticationSecret is SHA1( SHA1( ... ( SHA1( - // HashedPassphrase ) ) ) The number of iterations is time bounded - // at 1/10 of a second, and also bounded by fixed minimum and - // maximum values (to prevent too weak of a computation and to - // prevent a DoS, respectively). This value is used as the shared - // secret in challenge-response authentication exchanges. - - *o_piAuthenticationHashIterationCount = 0; - - unsigned long iStartTickCount = K_GetTickCount(); - - while ( *o_piAuthenticationHashIterationCount < - MAX_AUTHENTICATION_ITERATION_COUNT - && ( *o_piAuthenticationHashIterationCount < - MIN_AUTHENTICATION_ITERATION_COUNT - || iStartTickCount + - AUTHENTICATION_ITERATION_TIME_IN_MILLISECONDS > - K_GetTickCount() ) ) - { - if ( !HashBuffer( - aHashedPassphrase, - HASH_LENGTH, - aHashedPassphrase) ) - { - return false; - } - - (*o_piAuthenticationHashIterationCount)++; - } - - ConvertBinaryToUTF8HexString( o_sHexAuthenticationSecret, - aHashedPassphrase, HASH_LENGTH ); - -#if defined(METAWARE) && defined(DEBUG) - snprintf(outmsg, OUTMSG_SIZE, - "o_sHexAuthenticationSecret=%x o_piAuth..." - "= %x aHashedPassphrase=%s\n", - o_sHexAuthenticationSecret, - *o_piAuthenticationHashIterationCount, - aHashedPassphrase); - Log2("ComputeEntityHashedPassphraseAndAuthenticationSecret ", - outmsg); -#endif - - return true; -} - -/** - * ComputeFixedEntityHashedPassphraseAndAuthenticationSecret - */ -bool ComputeFixedEntityHashedPassphraseAndAuthenticationSecret( - const char* i_sPassphrase, - char* const o_sHexHashedPassphrase, - int i_iAuthenticationHashIterationCount, - char* const o_sHexAuthenticationSecret ) -{ - // compute same values as - // ComputeEntityHashedPassphraseAndAuthenticationSecret, except - // iteration count is fixed -#if defined(METAWARE) && defined(DEBUG) - Log2 ("KMSAgent_LoadProfile::" - "ComputeFixedEntityHashedPassphraseAndAuthenticationSecret", "Entered"); -#endif - - // detect attempts to cause weak computation or DoS attack - if ( i_iAuthenticationHashIterationCount < - MIN_AUTHENTICATION_ITERATION_COUNT || - i_iAuthenticationHashIterationCount > - MAX_AUTHENTICATION_ITERATION_COUNT ) - { - return false; - } - - - unsigned char aHashedPassphrase[HASH_LENGTH]; - - memset(aHashedPassphrase, 0, HASH_LENGTH); - - if ( strlen(i_sPassphrase) > 0 ) - { - if ( !HashBuffer( - (unsigned char*)i_sPassphrase, - strlen(i_sPassphrase), - aHashedPassphrase) ) - { - return false; - } - } - - ConvertBinaryToUTF8HexString( o_sHexHashedPassphrase, - aHashedPassphrase, HASH_LENGTH ); - - int i; - for ( i = 0; i < i_iAuthenticationHashIterationCount; i++ ) - { - if ( !HashBuffer( - aHashedPassphrase, - HASH_LENGTH, - aHashedPassphrase) ) - { - return false; - } - } - - ConvertBinaryToUTF8HexString( o_sHexAuthenticationSecret, - aHashedPassphrase, HASH_LENGTH ); - -#if defined(METAWARE) && defined(DEBUG) - snprintf(outmsg, OUTMSG_SIZE, - "i_iAuth %x \n", - i_iAuthenticationHashIterationCount); - - Log2("ComputeEntityHashedPassphraseAndAuthenticationSecret ", - outmsg); -#endif - - - return true; -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentChallenge.h --- a/usr/src/lib/libkmsagent/common/KMSAgentChallenge.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentChallenge.h - */ - -#ifndef KMSAagentChallenge_H -#define KMSAagentChallenge_H - -/** - * computes the response to the KMA's challenge using - * HMAC-SHA1( RootCACertificate || AuthenticationChallenge, - * AuthenticationSecret ). The AuthenticationSecret is - * used as the key in the HMAC-SHA1 computation. - * - * @param i_pAuthenticationSecret - * @param i_iAuthenticationSecretLength - * @param i_pRootCACertificate - * @param i_iRootCACertificateLength - * @param i_pAuthenticationChallenge - * @param i_iAuthenticationChallengeLength - * @param o_pAuthenticationChallengeResponse - * @param i_iAuthenticationChallengeResponseLength - * - * @return boolean success indicator - */ -bool ComputeChallengeResponse( - const unsigned char* i_pAuthenticationSecret, - int i_iAuthenticationSecretLength, - const unsigned char* i_pRootCACertificate, - int i_iRootCACertificateLength, - const unsigned char* i_pAuthenticationChallenge, - int i_iAuthenticationChallengeLength, - unsigned char* o_pAuthenticationChallengeResponse, - int i_iAuthenticationChallengeResponseLength ); - -/** - * computes the SHA1 hash of the specified passphrase. - * The number of SHA1 iterations - * is recorded in o_iAuthenticationHashIterationCount and the result - * stored in o_sHexAuthenticationSecret as a UTF8 hex string. - * HexAuthenticationSecret is SHA1( SHA1( ... ( SHA1( HashedPassphrase ) ) ) - * The number of iterations is time bounded at 1/10 of a second, and also - * bounded by fixed minimum and maximum values (to prevent too weak of a - * computation and to prevent a DoS, respectively). - * This value is used as the shared secret in challenge-response - * authentication exchanges. - - * @param i_sPassphrase the passphrase to be hashed - * @param o_sHexHashedPassphrase the hashed passphrase - * returned in UTF8 hexadecimal, this - * buffer should be at least - * 2*HASH_LENGTH+1 bytes - * @param o_iAuthenticationHashIterationCount - * @param o_sHexAuthenticationSecret - * - * @return boolean success indicator - */ -bool ComputeEntityHashedPassphraseAndAuthenticationSecret( - const char* const i_sPassphrase, - char* const o_sHexHashedPassphrase, - int* const o_piAuthenticationHashIterationCount, - char* const o_sHexAuthenticationSecret ); - -/** - * computes the SHA1 hash of the specified passphrase. The SHA1 is - * performed a "fixed" number of times as specified by - * i_iAuthenticationHashIterationCount. - * - * @param i_sPassphrase the passprhase to be SHA1 hashed - * @param o_sHexHashedPassphrase the SHA1 hash - * of i_sPassphrase stored as a UTF8 hex string - * @param i_iAuthenticationHashIterationCount the number - * of times to SHA1 hash the passphrase - * @param o_sHexAuthenticationSecret the passphrase hashed - * the fixed number of times and stored as a UTF8 - * hex string - * - * @return boolean success indicator - */ -bool ComputeFixedEntityHashedPassphraseAndAuthenticationSecret( - const char* i_sPassphrase, - char* const o_sHexHashedPassphrase, - int i_iAuthenticationHashIterationCount, - char* const o_sHexAuthenticationSecret ); - -#endif /* KMSAagentChallenge_H */ - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentCryptoUtilities.cpp - */ - -#include -#include -#include -#include - -#include "KMSAgentCryptoUtilities.h" -#include "SYSCommon.h" -#include "KMSAgentStringUtilities.h" -//#include "ApplianceParameters.h" - -// Find header in CryptoUtilities.h -bool GetPseudorandomBytes( - int i_iNumBytes, - unsigned char* o_pBytes ) -{ - if ( 1 != RAND_bytes( o_pBytes, i_iNumBytes) ) - { - return false; - } - - return true; -} - -// assumes o_pHashedBuffer points to HASH_LENGTH bytes -bool HashBuffer( - const unsigned char* i_pBufferToHash, - int i_iBufferToHashSize, - unsigned char* o_pHashedBuffer ) -{ - - FATAL_ASSERT( HASH_LENGTH == SHA_DIGEST_LENGTH ); - FATAL_ASSERT( i_pBufferToHash && (i_iBufferToHashSize > 0) && o_pHashedBuffer ); - - unsigned char aDigest[HASH_LENGTH]; - - if ( NULL == SHA1( i_pBufferToHash, i_iBufferToHashSize, aDigest ) ) - { - return false; - } - - memcpy( o_pHashedBuffer, aDigest, HASH_LENGTH ); - - return true; -} - -// assumes o_pHMACBuffer points to HMAC_LENGTH bytes -bool HMACBuffers( - int i_iBufferCount, - const unsigned char** i_pBufferToHMAC, - int* i_pBufferToHMACSize, - const unsigned char* i_pHMACKey, - int i_iHMACKeySize, - unsigned char* o_pHMACBuffer ) -{ - // assumes o_pHMACBuffer points to HMAC_LENGTH bytes - - FATAL_ASSERT( HMAC_LENGTH == SHA_DIGEST_LENGTH ); - FATAL_ASSERT( (i_iBufferCount > 0) && - i_pBufferToHMAC && - i_pBufferToHMACSize && - i_pHMACKey && - (i_iHMACKeySize > 0) && o_pHMACBuffer ); - - HMAC_CTX stContext; - - HMAC_CTX_init( &stContext ); - - HMAC_Init_ex( &stContext, i_pHMACKey, i_iHMACKeySize, EVP_sha1(), NULL ); - - int i; - for ( i = 0; i < i_iBufferCount; i++ ) - { - HMAC_Update( &stContext, i_pBufferToHMAC[i], i_pBufferToHMACSize[i] ); - } - - unsigned int iHMACSize = HMAC_LENGTH; - - HMAC_Final( &stContext, o_pHMACBuffer, &iHMACSize ); - - FATAL_ASSERT( iHMACSize == HMAC_LENGTH ); - - HMAC_CTX_cleanup( &stContext ); - - return true; -} - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.h --- a/usr/src/lib/libkmsagent/common/KMSAgentCryptoUtilities.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentCryptoUtilities.h - */ - -#ifndef KMSAgentCryptoUtilities_H -#define KMSAgentCryptoUtilities_H - -#ifdef WIN32 -#pragma warning(disable: 4786) -#endif - -#define HASH_LENGTH 20 -#define HMAC_LENGTH 20 - -/** - * Generates a random set of bytes of the specified length. - * - * @return boolean success indicator - */ -bool GetPseudorandomBytes( - int i_iNumBytes, - unsigned char* o_pBytes ); - -/** - * computes SHA-1 hash of the buffer - * @param i_pBufferToHash - * @param i_iBufferToHashSize - * @param o_pHashedBuffer buffer to recieve the SHA-1 hash and must be - * #HASH_LENGTH bytes - * @return boolean success indicator - */ -bool HashBuffer( - const unsigned char* i_pBufferToHash, - int i_iBufferToHashSize, - unsigned char* o_pHashedBuffer ); - -#ifdef METAWARE - -// implemented in KMSAgentCryptoUtilitiesTreckHmac.c -extern "C" int HMACBuffers( - int i_iBufferCount, - const unsigned char** i_pBufferToHMAC, - int* i_pBufferToHMACSize, - const unsigned char* i_pHMACKey, - int i_iHMACKeySize, - unsigned char* o_pHMACBuffer ); - -#else -/** - * computes HMAC on the supplied buffers using SHA-1 - * hashing and the key supplied. No logging is performed since this - * functions must execute in a Known Answer Test prior to - * #KMSAgent_InitializeLibrary. - * @param i_iBufferCount number of buffers provided in #i_pBufferToHMAC - * @param i_pBufferToHMAC array of buffers - * @param i_pBufferToHMACSize array of sizes corresponding to buffers in - * #i_pBufferToHMAC - * @param i_pHMACKey secret key - * @param i_iHMACKeySize length of the key in bytes - * @param o_pHMACBuffer buffer to contain the HMAC, this buffer must be - * #HASH_LENGTH bytes - * @return boolean success indicator - */ -bool HMACBuffers( - int i_iBufferCount, - const unsigned char** i_pBufferToHMAC, - int* i_pBufferToHMACSize, - const unsigned char* i_pHMACKey, - int i_iHMACKeySize, - unsigned char* o_pHMACBuffer ); -#endif - - - -#endif //KMSAgentCryptoUtilities_H diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentDataUnitCache.cpp - */ - -#include -#include "SYSCommon.h" -#include "KMSClientProfile.h" -#include "KMSAgentDataUnitCache.h" - -CDataUnitCache::CDataUnitCache(int i_iMaxSize) -{ - m_iSize = 0; - m_iIndex = 0; - m_iMaxSize = i_iMaxSize; - m_pCache = 0; - - K_CreateMutex(&m_Lock); -} - -CDataUnitCache::~CDataUnitCache() -{ - delete[] m_pCache; - K_DestroyMutex(m_Lock); -} - -bool CDataUnitCache::Insert( - const unsigned char* const i_pDataUnitID, - int i_iDataUnitIDMaxLen, - const unsigned char* const i_pDataUnitKeyID , - int i_iDataUnitKeyIDMaxLen, - const utf8char* const i_wsApplianceNetworkAddress ) -{ - FATAL_ASSERT( (i_pDataUnitID && i_iDataUnitIDMaxLen == KMS_DATA_UNIT_ID_SIZE) || - (i_pDataUnitKeyID && i_iDataUnitKeyIDMaxLen == KMS_KEY_ID_SIZE)); - FATAL_ASSERT( i_wsApplianceNetworkAddress && - strlen( i_wsApplianceNetworkAddress ) < KMS_MAX_NETWORK_ADDRESS ); - - Lock(); - - if ( m_pCache == 0 ) - { - m_pCache = new DataUnitCacheEntry[m_iMaxSize]; - - if ( !m_pCache ) - { - // no error logged on out of memory - Unlock(); -#if defined(DEBUG) && defined(METAWARE) - log_printf("CDataUnitCache::Insert new DataUnitCacheEntry alloc failure\n"); -#endif - return false; - } - } - - if( m_iSize >= m_iMaxSize ) - { - // the cache is full, so reuse an old slot - - m_iIndex = (m_iIndex + 1) % m_iMaxSize; - } - else - { - m_iIndex = m_iSize; - - m_iSize++; - } - - strncpy( m_pCache[m_iIndex].m_wsApplianceNetworkAddress, - i_wsApplianceNetworkAddress, - sizeof(m_pCache[m_iIndex].m_wsApplianceNetworkAddress) ); - m_pCache[m_iIndex].m_wsApplianceNetworkAddress[sizeof(m_pCache[m_iIndex].m_wsApplianceNetworkAddress)-1] = '\0'; - - if ( i_pDataUnitID ) - { - memcpy( m_pCache[m_iIndex].m_aDataUnitID, - i_pDataUnitID, - i_iDataUnitIDMaxLen ); - } - else - { - memset( m_pCache[m_iIndex].m_aDataUnitID,0,KMS_DATA_UNIT_ID_SIZE); - } - - if ( i_pDataUnitKeyID ) - { - memcpy( m_pCache[m_iIndex].m_aDataUnitKeyID, - i_pDataUnitKeyID, - i_iDataUnitKeyIDMaxLen ); - } - else - { - memset(m_pCache[m_iIndex].m_aDataUnitKeyID,0,KMS_KEY_ID_SIZE); - } - - Unlock(); - - return true; -} - -bool CDataUnitCache::GetApplianceByDataUnitID( - const unsigned char* const i_pDataUnitID, - int i_iDataUnitIDMaxLen, - utf8char* const o_wsApplianceNetworkAddress, - int i_iMaxApplianceNetworkAddressLen ) -{ - FATAL_ASSERT( i_pDataUnitID ); - FATAL_ASSERT( i_iDataUnitIDMaxLen == KMS_DATA_UNIT_ID_SIZE ); - FATAL_ASSERT( i_iMaxApplianceNetworkAddressLen <= KMS_MAX_NETWORK_ADDRESS ); - - // assumes o_wsApplianceNetworkAddress points to at least KMS_MAX_NETWORK_ADDRESS - - Lock(); - - int i; - for( i = 0; i < m_iSize; i++ ) - { - if( memcmp(m_pCache[i].m_aDataUnitID, i_pDataUnitID, KMS_DATA_UNIT_ID_SIZE) == 0 ) - { - strncpy( o_wsApplianceNetworkAddress, - m_pCache[i].m_wsApplianceNetworkAddress, - i_iMaxApplianceNetworkAddressLen ); - o_wsApplianceNetworkAddress[i_iMaxApplianceNetworkAddressLen-1] = '\0'; - Unlock(); - return true; - } - } - - Unlock(); - - return false; -} - -bool CDataUnitCache::GetApplianceByDataUnitKeyID( - const unsigned char* const i_pDataUnitKeyID, - int i_iDataUnitKeyIDMaxLen, - utf8char* const o_wsApplianceNetworkAddress, - int i_iMaxApplianceNetworkAddressLen ) -{ - FATAL_ASSERT( i_pDataUnitKeyID ); - FATAL_ASSERT( i_iDataUnitKeyIDMaxLen == KMS_KEY_ID_SIZE ); - FATAL_ASSERT( i_iMaxApplianceNetworkAddressLen <= KMS_MAX_NETWORK_ADDRESS ); - - // assumes o_wsApplianceNetworkAddress points to at least KMS_MAX_NETWORK_ADDRESS - - Lock(); - - int i; - for( i = 0; i < m_iSize; i++ ) - { - if( memcmp(m_pCache[i].m_aDataUnitKeyID, - i_pDataUnitKeyID, KMS_KEY_ID_SIZE) == 0 ) - { - strncpy( o_wsApplianceNetworkAddress, - m_pCache[i].m_wsApplianceNetworkAddress, - i_iMaxApplianceNetworkAddressLen ); - o_wsApplianceNetworkAddress[i_iMaxApplianceNetworkAddressLen-1] = '\0'; - - Unlock(); - - return true; - } - } - - Unlock(); - - return false; -} - -void CDataUnitCache::Lock() -{ - K_LockMutex(m_Lock); -} - -void CDataUnitCache::Unlock() -{ - K_UnlockMutex(m_Lock); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.h --- a/usr/src/lib/libkmsagent/common/KMSAgentDataUnitCache.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** @file KMSAgentDataUnitCache.h - * @defgroup EncryptionAgent Encryption Agent API - * - */ -#ifndef KMSAGENT_DATA_UNIT_CACHE_H -#define KMSAGENT_DATA_UNIT_CACHE_H - -#define DATA_UNIT_CACHE_MAX_SIZE 128 - -typedef struct DataUnitCacheEntry -{ - utf8char m_wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS+1]; - unsigned char m_aDataUnitID[KMS_DATA_UNIT_ID_SIZE]; - unsigned char m_aDataUnitKeyID[KMS_KEY_ID_SIZE]; - -} DataUnitCacheEntry; - -/** - * Maintains an affinity list between KMAs and DUs and KeyIDs. - */ -class CDataUnitCache -{ - -public: - CDataUnitCache(int i_iMaxSize = DATA_UNIT_CACHE_MAX_SIZE); - ~CDataUnitCache(); - - /** - * insert a new DataUnitCacheEntry into the cache list, either i_pDataUnitID or - * i_pDataUnitKeyID must be specified for affinity with the specified i_wsApplianceNetworkAddress - * @param i_pDataUnitID optional, specifies a DU ID cache entry if specified - * @param i_iDataUnitIDMaxLen ignored if i_pDataUnitID not specified, otherwise - * specifies the length of i_pDataUnitID - * @param i_pDataUnitKeyID optional, specifies a Key ID cache entry if specified - * @param i_iDataUnitKeyIDMaxLen ignored if i_pDataUnitKeyID is not specified, - * otherwise specifies the length of i_pDataUnitKeyID - * @param i_wsApplianceNetworkAddress required and specifies the KMA affiliated - * with the DU ID or Key ID - * @return True if successfully inserted into the cache - */ - bool Insert( - const unsigned char* const i_pDataUnitID, - int i_iDataUnitIDMaxLen, - const unsigned char* const i_pDataUnitKeyID , - int i_iDataUnitKeyIDMaxLen, - const utf8char* const i_wsApplianceNetworkAddress ); - - bool GetApplianceByDataUnitID( - const unsigned char* const i_pDataUnitID, - int i_iDataUnitIDMaxLen, - utf8char* const o_wsApplianceNetworkAddress, - int i_iMaxApplianceNetworkAddressLen ); - - bool GetApplianceByDataUnitKeyID( - const unsigned char* const i_pDataUnitKeyID, - int i_iDataUnitKeyIDMaxLen, - utf8char* const o_wsApplianceNetworkAddress, - int i_iMaxApplianceNetworkAddressLen ); - -protected: - void Lock(); - void Unlock(); - -private: - K_MUTEX_HANDLE m_Lock; - - int m_iIndex; - int m_iSize; - int m_iMaxSize; - DataUnitCacheEntry *m_pCache; - -}; - -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentFatalState.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentFatalState.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentFatalState.cpp - */ -#include -#include - -#include "SYSCommon.h" -#include "KMSAgentStringUtilities.h" -#include "KMSAuditLogger.h" - -#define MAX_TIME_STAMP_LENGTH 30 - -#ifndef METAWARE -/** - * append the state of the application in the log file. - */ -void process_fatal_application_state(const char* sFile, - const char* sFunction, - int iLine, - const char* sAdditionalText) -{ - - // File format: ,,,,, - char sFileLogEntry[MAX_LOG_FILE_LINE_LENGTH]; - char sTimeStamp[MAX_TIME_STAMP_LENGTH]; - char sLine[20]; - - GetCurrentDateTimeISO8601UTC(sTimeStamp, MAX_TIME_STAMP_LENGTH); - Int64ToUTF8(sLine, iLine, false, false); - - strncpy(sFileLogEntry, "A fatal application error has occurred. Date: ", sizeof(sFileLogEntry)); - - sFileLogEntry[sizeof(sFileLogEntry)-1] = '\0'; - - strncat(sFileLogEntry, sTimeStamp, MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - strncat(sFileLogEntry, " File: ", MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - strncat(sFileLogEntry, sFile, MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - strncat(sFileLogEntry, " Function: ", MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - strncat(sFileLogEntry, sFunction, MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - strncat(sFileLogEntry, " Line: ", MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - strncat(sFileLogEntry, sLine, MAX_LOG_FILE_LINE_LENGTH - strlen(sFileLogEntry)); - - LogToFile( 0, sFileLogEntry ); - - exit( -1 ); -} - -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include "KMSAgentKeyCallout.h" - -#ifdef METAWARE -extern "C" int ecpt_get_pc_key_and_xor( unsigned char * key ); -#endif - -/** - * Hook function to get the key in the clear (XOR is presently used) - * @returns 0=ok, nonzero = bad - */ -int KMSAgentKeyCallout( unsigned char io_aKey[KMS_MAX_KEY_SIZE] ) -{ -#ifndef METAWARE - return 0; -#else - return ecpt_get_pc_key_and_xor( io_aKey ); -#endif -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.h --- a/usr/src/lib/libkmsagent/common/KMSAgentKeyCallout.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentKeyCallout.h - * - */ - -#ifndef KMSAGENT_KEYCALLOUT_H -#define KMSAGENT_KEYCALLOUT_H - -#include "KMSAgent.h" - -/** - * Behavior is up to customizers of the KMS Agent reference implementation. - * A possible usage of this function is to encrypt the plaintext - * key value. This function will be invoked by the following KMS Agent API - * functions upon successful receipt of a key from a KMS transaction: - *

    - *
  • KMSAgent_CreateKey - *
  • KMSAgent_RetrieveKey - *
  • KMSAgent_RetrieveDataUnitKeys - once for each key retrieved - *
  • KMSAgent_RetrieveProtectAndProcessKey - *
- * - * @param io_pKey a plaintext key - * @return 0 if success - */ -int KMSAgentKeyCallout( unsigned char io_aKey[KMS_MAX_KEY_SIZE] ); - - -#endif - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,454 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentKnownAnswerTests.cpp - */ - -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) -#include -#define AES_MAXKEYBYTES AES_MAX_KEY_BYTES -#define AES_MAXKEYBITS AES_MAXBITS -#else -#include "rijndael.h" -#endif -#include "KMSAgentCryptoUtilities.h" -#include "KMSAgentStringUtilities.h" - -#ifdef METAWARE -#include "debug.h" -#include "sizet.h" -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -#endif - -#include "KMSAgentAESKeyWrap.h" -#include "KMSAgentKnownAnswerTests.h" - -int KnownAnswerTestAESKeyWrap (void) -{ - - /* - * Test Vectors from RFC3394 for 256 bit KEK and 256 bit Key - * Wrap Input: - KEK: - 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F - Key Data: - 00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F - - Output: - Ciphertext 28C9F404C4B810F4 CBCCB35CFB87F826 3F5786E2D80ED326 - CBC7F0E71A99F43B FB988B9B7A02DD21 - - Unwrap: - Plaintext A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF - 0001020304050607 08090A0B0C0D0E0F - - Output: - Key Data: - 00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F - - */ - - static char sKEK[] = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"; - static char sKey[] = "00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F"; - static char sKnownCiphertext[] = "28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21"; - - //#ifdef KAT_DEBUG - // printf("\nAES Key Wrap Test using Test Vectors from RFC 3394 for 256b KEK and 256b Key\n\n"); - // printf("KEK=%s\n", sKEK); - // printf("Key=%s\n", sKey); - //#endif - - // key-encryption key - unsigned char acKEK[AES_MAXKEYBYTES]; - - // plaintext key - unsigned char acKey[AES_MAXKEYBYTES]; - - // the wrapped key includes an extra 64bits for the integrity check register - unsigned char acWrappedKey[AES_MAXKEYBYTES + 8]; - unsigned char acUnWrappedKey[AES_MAXKEYBYTES]; - unsigned char acExpectedWrappedKey[AES_MAXKEYBYTES + 8]; - - if ((size_t) ConvertUTF8HexStringToBinary( - sKnownCiphertext, - acExpectedWrappedKey) != strlen(sKnownCiphertext) / 2) - { - return -1; - } - - if (ConvertUTF8HexStringToBinary( - sKEK, - acKEK) != AES_MAXKEYBYTES) - { - return -1; - } - - if (ConvertUTF8HexStringToBinary( - sKey, - acKey) != AES_MAXKEYBYTES) - { - return -1; - } - - // for 256 bit Key n=64 - aes_key_wrap(acKEK, sizeof (acKEK), acKey, - 4, acWrappedKey); - - if (memcmp(acWrappedKey, acExpectedWrappedKey, sizeof (acWrappedKey)) != 0) - { - return -1; - } - - if (aes_key_unwrap(acKEK, sizeof (acKEK), acWrappedKey, - acUnWrappedKey, 4) != 0) - { - return -1; - } - - if (memcmp(acKey, acUnWrappedKey, sizeof (acKey)) != 0) - { - return -1; - } - - return 0; -} - -static int AES_ECB_TestExecution ( - const char * const i_sPlainText, - const char * const i_sKnownCypherText, - const unsigned char * const i_pKey) -{ - unsigned char acPlainText[256]; - unsigned char acCypherText[sizeof (acPlainText)]; - unsigned char acKnownCypherText[sizeof (acPlainText)]; - unsigned char acDecryptedCypherText[sizeof (acPlainText)]; - memset(acDecryptedCypherText, 0, sizeof (acDecryptedCypherText)); - -#ifdef KAT_DEBUG - char sComputedCypherText[256]; -#endif - -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) - void *ks; - size_t ks_size; -#else - rijndael_ctx ctx; -#endif - - if ((size_t) ConvertUTF8HexStringToBinary( - i_sPlainText, - acPlainText) != strlen(i_sPlainText) / 2) - { - return -1; - } - if ((size_t) ConvertUTF8HexStringToBinary( - i_sKnownCypherText, - acKnownCypherText) != strlen(i_sKnownCypherText) / 2) - { - return -1; - } - -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) - ks = aes_alloc_keysched(&ks_size, 0); - if (ks == NULL) - return (-1); - aes_init_keysched(i_pKey, AES_MAXKEYBITS, ks); - (void) aes_encrypt_block(ks, acPlainText, acCypherText); -#else - rijndael_set_key_enc_only(&ctx, (uint8_t *) i_pKey, AES_MAXKEYBITS); - - rijndael_encrypt(&ctx, acPlainText, (uint8_t *) acCypherText); -#endif - -#ifdef KAT_DEBUG - ConvertBinaryToUTF8HexString(sComputedCypherText, - acCypherText, - strlen(i_sPlainText) / 2); - printf("PlainText=%s\n", i_sPlainText); - printf("CypherText=%s\n", sComputedCypherText); -#endif - - if (memcmp(acCypherText, acKnownCypherText, strlen(i_sKnownCypherText) / 2) != 0) - { -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) - free(ks); -#endif - return -1; - } - -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) - aes_init_keysched(i_pKey, AES_MAXKEYBITS, ks); - (void) aes_decrypt_block(ks, acCypherText, acDecryptedCypherText); - free(ks); -#else - rijndael_set_key(&ctx, (uint8_t *) i_pKey, AES_MAXKEYBITS); - rijndael_decrypt(&ctx, (uint8_t *) acCypherText, acDecryptedCypherText); -#endif - - if (memcmp(acPlainText, acDecryptedCypherText, strlen(i_sPlainText) / 2) != 0) - { - return -1; - } - - return 0; - -} - -static int KnownAnswerTestAESECB_GFSbox (void) -{ - /* - * Test Vectors from AES Algorithm Validation Suite(AESAVS) - */ - unsigned char acKey[AES_MAXKEYBYTES]; - memset(acKey, 0, sizeof (acKey)); - - /* - # CAVS 6.1 - # Config info for Sun 1820 AES - # AESVS GFSbox test data for ECB - # State : Encrypt and Decrypt - # Key Length : 256 - # Generated on Wed Aug 13 13:39:06 2008 - */ - const size_t GFSboxCount = 5; - static char sPlainText[GFSboxCount][33]; - static char sKnownCypherText[GFSboxCount][33]; - strcpy(sPlainText[0], "014730f80ac625fe84f026c60bfd547d"); - strcpy(sPlainText[1], "0b24af36193ce4665f2825d7b4749c98"); - strcpy(sPlainText[2], "761c1fe41a18acf20d241650611d90f1"); - strcpy(sPlainText[3], "8a560769d605868ad80d819bdba03771"); - strcpy(sPlainText[4], "91fbef2d15a97816060bee1feaa49afe"); - - strcpy(sKnownCypherText[0], "5c9d844ed46f9885085e5d6a4f94c7d7"); - strcpy(sKnownCypherText[1], "a9ff75bd7cf6613d3731c77c3b6d0c04"); - strcpy(sKnownCypherText[2], "623a52fcea5d443e48d9181ab32c7421" ); - strcpy(sKnownCypherText[3], "38f2c7ae10612415d27ca190d27da8b4" ); - strcpy(sKnownCypherText[4], "1bc704f1bce135ceb810341b216d7abe" ); - - - for (size_t i = 0; i < GFSboxCount; i++) - { - if (AES_ECB_TestExecution(sPlainText[i], sKnownCypherText[i], acKey) != 0) - { -#ifdef KAT_DEBUG - printf("GFSbox[%d]: failed\n", i); -#endif - return -1; - } -#ifdef KAT_DEBUG - printf("GFSbox[%d]: passed\n", i); -#endif - } - return 0; -} - -static int KnownAnswerTestAESECB_KeySbox (void) -{ - unsigned char acKey[AES_MAXKEYBYTES]; - memset(acKey, 0, sizeof (acKey)); - - /* - # CAVS 6.1 - # Config info for Sun 1820 AES - # AESVS KeySbox test data for ECB - # State : Encrypt and Decrypt - # Key Length : 256 - # Generated on Wed Aug 13 13:39:07 2008 - */ - const size_t KeySboxCount = 16; - static char sKey[KeySboxCount][65]; - static char sKnownCypherText[KeySboxCount][33]; - static char sPlainText[] = "00000000000000000000000000000000"; - - strcpy(sKey[0], "c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558"); - strcpy(sKey[1], "28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64"); - strcpy(sKey[2], "c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c"); - strcpy(sKey[3], "984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627"); - strcpy(sKey[4], "b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f"); - strcpy(sKey[5], "1d85a181b54cde51f0e098095b2962fdc93b51fe9b88602b3f54130bf76a5bd9"); - strcpy(sKey[6], "dc0eba1f2232a7879ded34ed8428eeb8769b056bbaf8ad77cb65c3541430b4cf"); - strcpy(sKey[7], "f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9"); - strcpy(sKey[8], "797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e"); - strcpy(sKey[9], "6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707"); - strcpy(sKey[10], "ccd1bc3c659cd3c59bc437484e3c5c724441da8d6e90ce556cd57d0752663bbc"); - strcpy(sKey[11], "13428b5e4c005e0636dd338405d173ab135dec2a25c22c5df0722d69dcc43887"); - strcpy(sKey[12], "07eb03a08d291d1b07408bf3512ab40c91097ac77461aad4bb859647f74f00ee"); - strcpy(sKey[13], "90143ae20cd78c5d8ebdd6cb9dc1762427a96c78c639bccc41a61424564eafe1"); - strcpy(sKey[14], "b7a5794d52737475d53d5a377200849be0260a67a2b22ced8bbef12882270d07"); - strcpy(sKey[15], "fca02f3d5011cfc5c1e23165d413a049d4526a991827424d896fe3435e0bf68e"); - strcpy(sKnownCypherText[0], "46f2fb342d6f0ab477476fc501242c5f"); - strcpy(sKnownCypherText[1], "4bf3b0a69aeb6657794f2901b1440ad4"); - strcpy(sKnownCypherText[2], "352065272169abf9856843927d0674fd"); - strcpy(sKnownCypherText[3], "4307456a9e67813b452e15fa8fffe398"); - strcpy(sKnownCypherText[4], "4663446607354989477a5c6f0f007ef4"); - strcpy(sKnownCypherText[5], "531c2c38344578b84d50b3c917bbb6e1"); - strcpy(sKnownCypherText[6], "fc6aec906323480005c58e7e1ab004ad"); - strcpy(sKnownCypherText[7], "a3944b95ca0b52043584ef02151926a8"); - strcpy(sKnownCypherText[8], "a74289fe73a4c123ca189ea1e1b49ad5"); - strcpy(sKnownCypherText[9], "b91d4ea4488644b56cf0812fa7fcf5fc"); - strcpy(sKnownCypherText[10], "304f81ab61a80c2e743b94d5002a126b"); - strcpy(sKnownCypherText[11], "649a71545378c783e368c9ade7114f6c"); - strcpy(sKnownCypherText[12], "47cb030da2ab051dfc6c4bf6910d12bb"); - strcpy(sKnownCypherText[13], "798c7c005dee432b2c8ea5dfa381ecc3"); - strcpy(sKnownCypherText[14], "637c31dc2591a07636f646b72daabbe7"); - strcpy(sKnownCypherText[15], "179a49c712154bbffbe6e7a84a18e220"); - - for (size_t i = 0; i < KeySboxCount; i++) - { -#ifdef KAT_DEBUG - printf("KeySbox[%d]: \n", i); -#endif - unsigned char acKey[256]; - if ((size_t) ConvertUTF8HexStringToBinary( - sKey[i], - acKey) != strlen(sKey[i]) / 2) - { -#ifdef KAT_DEBUG - printf("KeySbox[%d]: failed hex to binary conversion\n", i); -#endif - return -1; - } - if (AES_ECB_TestExecution(sPlainText, sKnownCypherText[i], acKey) != 0) - { -#ifdef KAT_DEBUG - printf("KeySbox[%d]: failed test\n", i); -#endif - return -1; - } -#ifdef KAT_DEBUG - printf("KeySbox[%d]: passed\n", i); -#endif - } - return 0; -} - -int KnownAnswerTestHMACSHA1 (void) -{ - /* Test Data from RFC2202 */ - const static char sKey[] = "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"; - unsigned char acKey[HMAC_LENGTH]; - const static char sPlainText[] = "Hi There"; - const static char sCypherText[] = "b617318655057264e28bc0b6fb378c8ef146be00"; - const unsigned char* aBuffersToHMAC[1]; - int aBuffersToHMACSize[1]; - unsigned char acCypherText[HMAC_LENGTH]; - unsigned char acComputedCypherText[HMAC_LENGTH]; - if ((size_t) ConvertUTF8HexStringToBinary( - sKey, - acKey) != sizeof (acKey)) - { -#ifdef KAT_DEBUG - printf("HMAC-SHA1: failed hex to binary conversion for Key\n"); -#endif - return -1; - } - if ((size_t) ConvertUTF8HexStringToBinary( - sCypherText, - acCypherText) != sizeof (acCypherText)) - { -#ifdef KAT_DEBUG - printf("HMAC-SHA1: failed hex to binary conversion for CypherText\n"); -#endif - return -1; - } - - aBuffersToHMAC[0] = (unsigned char *) sPlainText; - aBuffersToHMACSize[0] = strlen(sPlainText); - - if (!HMACBuffers( - 1, - aBuffersToHMAC, - aBuffersToHMACSize, - acKey, - sizeof (acKey), - acComputedCypherText)) - { -#ifdef KAT_DEBUG - printf("HMAC-SHA1: failed in HMACBuffers\n"); -#endif - return -1; - } - if (memcmp(acCypherText, acComputedCypherText, sizeof (acCypherText)) != 0) - { -#ifdef KAT_DEBUG - printf("HMAC-SHA1: failed comparison with expected cycphertext\n"); -#endif - return -1; - } - - return 0; -} - - -int KnownAnswerTestAESECB (void) -{ - if (KnownAnswerTestAESECB_GFSbox() != 0) - { -#ifdef KAT_DEBUG - printf("GFSbox: test suite failed\n"); -#endif - return -1; - } - - if (KnownAnswerTestAESECB_KeySbox() != 0) - { -#ifdef KAT_DEBUG - printf("KeySbox: test suite failed\n"); -#endif - return -1; - } - - return 0; -} - -#ifdef STAND_ALONE_TEST - -int main () -{ - // Known Answer Test on AES Key Wrap code - if (KnownAnswerTestAESKeyWrap() != 0) - { - return -1; - } - - if (KnownAnswerTestAESECB() != 0) - { - return -1; - } - - if (KnownAnswerTestHMACSHA1() != 0) - { - return -1; - } - - return 0; -} -#endif - - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.h --- a/usr/src/lib/libkmsagent/common/KMSAgentKnownAnswerTests.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** @file KMSAgent.h - * @defgroup EncryptionAgent Encryption Agent API - * - * The Agent API is used to communicate with the KMS Appliance for the - * purpose of registering storage devices, obtaining device keys, and - * receiving notifications of storage device events such as destruction. - * - */ -#ifndef KMS_AGENT_KNOWN_ANSWER_TESTS_H -#define KMS_AGENT_KNOWN_ANSWER_TESTS_H - -/** - * This function exercises both aes_key_wrap and aes_key_unwrap - * in order to satisfy a FIPS 140-2 requirement for a known answer test, aka KAT. Test - * vectors from RFC 3394 are used for this test. - * @return 0 on success, non-zero otherwise - */ -int KnownAnswerTestAESKeyWrap(void); - -/** - * This function exercises both rijndael_encrypt and rijndael_decrypt - * in order to satisfy a FIPS 140-2 requirement for a known answer test, aka KAT. Test - * vectors from Infoguard are used for this test. - * @return 0 if KAT passed, non-zero otherwise - */ -int KnownAnswerTestAESECB(void); - -/** - * This function exercises #HMACBuffers - * in order to satisfy a FIPS 140-2 requirement for a known answer test, aka KAT. Test - * vectors from Infoguard are used for this test. - * @return 0 if KAT passed, non-zero otherwise - */ -int KnownAnswerTestHMACSHA1(void); - -#endif - - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1169 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentLoadBalancer.cpp - */ - -#ifdef WIN32 -#define _WIN32_WINNT 0x0400 -#include -#include -#endif - -#include - -#include "KMS_AgentH.h" -#include "KMSClientProfile.h" -#include "KMSAgentSoapUtilities.h" -#include "KMSAgentStringUtilities.h" -#include "KMSClientProfileImpl.h" -#include "KMSAgent.h" -#include "KMSAuditLogger.h" -#include "ApplianceParameters.h" -#include "KMSAgentCryptoUtilities.h" - -#ifdef METAWARE -#include "debug.h" -#include "sizet.h" -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -#endif -#include "KMSAgentAESKeyWrap.h" - -#ifdef METAWARE -#include "stdsoap2.h" /* makes fewer platform assumptions - than the standard stdsoap2.h */ - -int time (char *); -#include "literals.h" -#else -#include "stdsoap2.h" -#endif - -#include "AutoMutex.h" - -// real declaration of soap * -#include "KMSAgentDataUnitCache.h" - -#include "ClientSoapFaultCodes.h" -#include "KMSAgentPKICommon.h" -#include "KMSAgentLoadBalancer.h" // needs to be after stdsoap2.h to use the - -CAgentLoadBalancer::CAgentLoadBalancer (KMSClientProfile * const i_pProfile) -: m_pProfile (i_pProfile), -m_iTransactionStartTimeInMilliseconds (0), -m_bFIPS (false), -m_iKWKEntryNum (0), -m_iLastAttemptedWhenNoneResponding (0) -{ - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) m_pProfile->m_pLock); - - // initialize the aCluster, let it contain the default appliance - m_iClusterNum = 1; - memset(&(m_aCluster[0]), 0, sizeof (KMSClusterEntry)); - strncpy(m_aCluster[0].m_wsApplianceNetworkAddress, - i_pProfile->m_wsApplianceAddress, - sizeof(m_aCluster[0].m_wsApplianceNetworkAddress)); - m_aCluster[0].m_wsApplianceNetworkAddress[sizeof(m_aCluster[0].m_wsApplianceNetworkAddress)-1] = '\0'; - - // This may not be known because the initial - // appliance's Alias is not yet entered. - strcpy(m_aCluster[0].m_wsApplianceAlias, ""); - strcpy(m_sURL, ""); - memset(m_aKWKEntries, 0, KMS_MAX_CLUSTER_NUM * sizeof(struct KWKEntry *)); -} - -CAgentLoadBalancer::~CAgentLoadBalancer () -{ - // free up KWK entries - for( int i=0; i < m_iKWKEntryNum && i < KMS_MAX_CLUSTER_NUM; i++) - { - if (m_aKWKEntries[i] != NULL) - { - delete m_aKWKEntries[i]; - } - } - return; -} - -char *CAgentLoadBalancer::GetHTTPSURL (int i_iIndex, int i_iPort) -{ - if (i_iIndex < 0 || i_iIndex >= m_iClusterNum) - { - strcpy(m_sURL, ""); - } - else - { - K_snprintf(m_sURL, KMS_MAX_URL, "https://%s:%d", - m_aCluster[i_iIndex].m_wsApplianceNetworkAddress, - i_iPort); - } - - return m_sURL; -} - -char *CAgentLoadBalancer::GetHTTPURL (int i_iIndex, int i_iPort) -{ - if (i_iIndex < 0 || i_iIndex >= m_iClusterNum) - { - strcpy(m_sURL, ""); - } - else - { - K_snprintf(m_sURL, KMS_MAX_URL, "http://%s:%d", - m_aCluster[i_iIndex].m_wsApplianceNetworkAddress, - i_iPort); - } - - return m_sURL; -} - -int CAgentLoadBalancer::Balance () -{ - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) m_pProfile->m_pLock); - - int i; - unsigned int iSelected = 0; - unsigned int iSelected2 = 0; - - // clear the failover attempts - m_pProfile->m_iFailoverAttempts = 0; - - // This assumes Balance()/BalanceBy...() are called at the top of - // each Agent Library transaction - // m_iTransactionStartTimeInMilliseconds is used to determine if - // enough time remains - // (vs. KMSClientProfile::m_iTransactionTimeout) to retry a - // request if there was a Server Busy error. - - m_iTransactionStartTimeInMilliseconds = K_GetTickCount(); - - // if not enabling load balancing, return the default appliance & if - // its FIPS compatible when running in FIPS_MODE - - if (m_pProfile->m_iClusterDiscoveryFrequency == 0) - { - if (m_bFIPS && !FIPScompatibleKMA(m_aCluster[0].m_sKMAVersion)) - { - return NO_FIPS_KMA_AVAILABLE; - } - return 0; - } - - int iCurrentTime = K_GetTickCount() / 1000; - - // if it is the first time or time to get cluster information - if ((!m_pProfile->m_bIsClusterDiscoveryCalled) || - ((iCurrentTime - m_pProfile->m_iLastClusterDiscoveryTime) > - m_pProfile->m_iClusterDiscoveryFrequency)) - { - if (!KMSClient_GetClusterInformation(m_pProfile, - m_pProfile->m_wsEntitySiteID, - sizeof (m_pProfile->m_wsEntitySiteID), - &(m_pProfile->m_iClusterNum), - m_pProfile->m_aCluster, - KMS_MAX_CLUSTER_NUM)) - { - // if failed due to some error, return default one - // KMSClient_GetClusterInformation logs - - return 0; - } - - m_pProfile->m_bIsClusterDiscoveryCalled = true; - - // Reset the transaction start time to not include the time spent - // calling KMSClient_GetClusterInformation. - - m_iTransactionStartTimeInMilliseconds = K_GetTickCount(); - - // reset this index since cluster size may have changed - m_iLastAttemptedWhenNoneResponding = 0; - - // TODO: Adjust timeouts to guarentee a response to the Agent - // Library called in m_iTransactionTimeout seconds? This means - // not adjusting m_iTransactionStartTimeInMilliseconds, but also - // reducing socket timeouts for subsequent calls. - } - - // sort the cluster array by Load - - KMSClient_SortClusterArray(m_pProfile); - - // copy all Appliances to this object - - for (i = 0; i < m_pProfile->m_iClusterNum; i++) - { - m_aCluster[i] = m_pProfile->m_aCluster[i]; - } - - m_iClusterNum = m_pProfile->m_iClusterNum; - - int iCandidateAppliances = 0; - - // the initial set of candidates for load balancing are all enabled, - // responding and unlocked KMAs (assumes they are at the top of the sort - // order) & FIPS compatible if we're in that mode - - for (i = 0; i < m_iClusterNum; i++) - { - if ((m_aCluster[i].m_iResponding == TRUE) && - (m_aCluster[i].m_iEnabled == TRUE ) && - (m_aCluster[i].m_iKMALocked == FALSE)) - { - iCandidateAppliances++; - } - } - - // check if there are any enabled and responding Appliances in the - // same site as this Agent, and if so make those the candidates - // (assumes they are at the top of the sort order) - - int iCandidateAppliancesInSameSite = 0; - - if (strlen(m_pProfile->m_wsEntitySiteID) > 0) - { - for (i = 0; i < iCandidateAppliances; i++) - { - if (strncmp(m_aCluster[i].m_wsApplianceSiteID, - m_pProfile->m_wsEntitySiteID, - sizeof(m_aCluster[i].m_wsApplianceSiteID)) == 0) - { - iCandidateAppliancesInSameSite++; - } - } - } - - // reduce the candidate set to just KMAs within the site - if (iCandidateAppliancesInSameSite > 0) - { - iCandidateAppliances = iCandidateAppliancesInSameSite; - } - - // constrain the candidate set to just FIPS compatible KMAs - if (m_bFIPS) - { - int iCandidateFIPSKMAs = 0; - - for (i = 0; i < iCandidateAppliances; i++) - { - if ( FIPScompatibleKMA(m_aCluster[i].m_sKMAVersion )) - { - iCandidateFIPSKMAs++; - } - } - - // select only from FIPS capable KMAs - iCandidateAppliances = iCandidateFIPSKMAs; - } - - // if there are no candidate Appliances, use the default Appliance unless - // we're in FIPS mode - - if (!m_bFIPS && iCandidateAppliances <= 1) - { - return 0; - } - - // FIPS mode - else if (iCandidateAppliances <= 0) - { - return NO_FIPS_KMA_AVAILABLE; - } - else if (iCandidateAppliances == 1) - { - return 0; - } - - // randomly select two candidate Appliances and select the one - // with the smaller load - - // choose one random number between 0 -- iCandidateAppliances - 1 - iSelected = rand() % iCandidateAppliances; - iSelected2 = (iSelected + 1) % iCandidateAppliances; - - // select the one with the smaller load - - if (m_aCluster[iSelected2].m_lLoad < m_aCluster[iSelected].m_lLoad) - { - iSelected = iSelected2; - } - - return iSelected; -} - -int CAgentLoadBalancer::BalanceByDataUnitID ( - const unsigned char * const i_pDataUnitID, - int i_iDataUnitIDMaxLen) -{ - FATAL_ASSERT(i_pDataUnitID); - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) m_pProfile->m_pLock); - - // clear the failover attempts - m_pProfile->m_iFailoverAttempts = 0; - - // This assumes Balance(), or BalanceBy...(), - // is called at the top of each Agent Library transaction - // m_iTransactionStartTimeInMilliseconds is used to determine if enough time remains - // (vs. KMSClientProfile::m_iTransactionTimeout) to retry a request if there was - // a Server Busy error. - - m_iTransactionStartTimeInMilliseconds = K_GetTickCount(); - - // look in cache - - CDataUnitCache *pDataUnitCache = (CDataUnitCache *) m_pProfile->m_pDataUnitCache; - - // if not enabling load balancing, return the default appliance & if - // its FIPS compatible when running in FIPS_MODE - - if (m_pProfile->m_iClusterDiscoveryFrequency == 0) - { - if (m_bFIPS && !FIPScompatibleKMA(m_aCluster[0].m_sKMAVersion)) - { - return NO_FIPS_KMA_AVAILABLE; - } - return 0; - } - - // if the Data Unit ID is in the server affinity cache, use that Appliance - - utf8char wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS]; - int iIndex = CLIENT_SIDE_ERROR; - - if (pDataUnitCache->GetApplianceByDataUnitID( - i_pDataUnitID, - i_iDataUnitIDMaxLen, - wsApplianceNetworkAddress, - sizeof(wsApplianceNetworkAddress))) - { - iIndex = FindIndexByNetworkAddress(wsApplianceNetworkAddress); - } - - if (iIndex != CLIENT_SIDE_ERROR) - { - if (m_bFIPS && !FIPScompatibleKMA(m_aCluster[iIndex].m_sKMAVersion)) - { - // in spite of caching we need to attempt an alternate KMA due - // to the FIPS mode setting - return Balance(); - } - return iIndex; - } - - // normal balancing - return Balance(); -} - -int CAgentLoadBalancer::BalanceByDataUnitKeyID ( - const unsigned char * const i_pDataUnitKeyID, - int i_iDataUnitKeyIDMaxLen) -{ - FATAL_ASSERT(i_pDataUnitKeyID); - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) m_pProfile->m_pLock); - - // clear the failover attempts - m_pProfile->m_iFailoverAttempts = 0; - - // This assumes Balance()/BalanceBy...() - // are called at the top of each Agent Library transaction - // m_iTransactionStartTimeInMilliseconds is used to determine if enough time remains - // (vs. KMSClientProfile::m_iTransactionTimeout) to retry a request if there was - // a Server Busy error. - - m_iTransactionStartTimeInMilliseconds = K_GetTickCount(); - - // look in cache - - CDataUnitCache *pDataUnitCache = (CDataUnitCache *) m_pProfile->m_pDataUnitCache; - - // if not enabling load balancing, return the default appliance & if - // its FIPS compatible when running in FIPS_MODE - - if (m_pProfile->m_iClusterDiscoveryFrequency == 0) - { - if (m_bFIPS && !FIPScompatibleKMA(m_aCluster[0].m_sKMAVersion)) - { - return NO_FIPS_KMA_AVAILABLE; - } - return 0; - } - - // if the Data Unit Key ID is in the server affinity cache, use that Appliance - - utf8char sApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS]; - int iIndex = CLIENT_SIDE_ERROR; - - if (pDataUnitCache->GetApplianceByDataUnitKeyID( - i_pDataUnitKeyID, - i_iDataUnitKeyIDMaxLen, - sApplianceNetworkAddress, - sizeof(sApplianceNetworkAddress))) - { - iIndex = FindIndexByNetworkAddress(sApplianceNetworkAddress); - } - - if (iIndex != CLIENT_SIDE_ERROR) - { - if (m_bFIPS && !FIPScompatibleKMA(m_aCluster[iIndex].m_sKMAVersion)) - { - // in spite of caching we need to attempt an alternate KMA due - // to the FIPS mode setting - return Balance(); - } - return iIndex; - } - - // normal balancing - return Balance(); -} - -int CAgentLoadBalancer::FindIndexByNetworkAddress -(char * i_wsApplianceNetworkAddress) -{ - FATAL_ASSERT(i_wsApplianceNetworkAddress); - - for (int i = 0; i < m_iClusterNum; i++) - { - - if ((strncmp(m_aCluster[i].m_wsApplianceNetworkAddress, - i_wsApplianceNetworkAddress, - sizeof(m_aCluster[i].m_wsApplianceNetworkAddress)) == 0) && - m_aCluster[i].m_iEnabled == TRUE && - m_aCluster[i].m_iResponding == TRUE) - { - return i; - } - - } - - return CLIENT_SIDE_ERROR; -} - -char* CAgentLoadBalancer::GetApplianceNetworkAddress (int i_iIndex) -{ - if (i_iIndex < 0 || i_iIndex >= m_iClusterNum) - { - return (char *)""; - } - - return m_aCluster[i_iIndex].m_wsApplianceNetworkAddress; -} - -bool CAgentLoadBalancer::FailOverLimit (void) -{ - if (m_pProfile->m_iFailoverLimit >= 0 && - m_pProfile->m_iFailoverAttempts > m_pProfile->m_iFailoverLimit) - return true; - else - return false; -} - -int CAgentLoadBalancer::FailOver (int i_iFailedApplianceIndex, - struct soap *i_pstSoap) -{ - FATAL_ASSERT(i_pstSoap); - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) m_pProfile->m_pLock); - - const char *strError = GET_SOAP_FAULTSTRING(i_pstSoap); - int iSoapErrno = i_pstSoap->errnum; - int iErrorCode = GET_FAULT_CODE(strError); - int i; - - if ( m_bFIPS && - KMSClient_NoFIPSCompatibleKMAs(m_pProfile)) - { - return NO_FIPS_KMA_AVAILABLE; - } - - m_pProfile->m_iFailoverAttempts++; - - /* - * if KWK is not registered, or mismatched, most likely KMA lost its key due to a service - * restart. Call RegisterKWK to re-register the KWK. - * If RegisterKWK fails proceed from here with new failover info - */ - if ( iErrorCode == CLIENT_ERROR_AGENT_KWK_NOT_REGISTERED || - iErrorCode == CLIENT_ERROR_AGENT_KWK_ID_MISMATCH ) - { - LogError(m_pProfile, - AGENT_LOADBALANCER_FAILOVER, - NULL, - m_aCluster[i_iFailedApplianceIndex].m_wsApplianceNetworkAddress, - "KWK not registered or ID mismatch - registering"); - // delete the KWK entry since the KMA no longer has it - DeleteKWKEntry( GetKMAID(i_iFailedApplianceIndex)); - - return i_iFailedApplianceIndex; - } - - bool bServerError = false; - - // if the request failed due to a Server Busy error, and if - // - transaction timeout has not been exceeded OR - // - failover attempts remain - // then failover - - if (iErrorCode == CLIENT_ERROR_SERVER_BUSY && - (K_GetTickCount() < m_iTransactionStartTimeInMilliseconds + (m_pProfile->m_iTransactionTimeout * 1000) || - !CAgentLoadBalancer::FailOverLimit())) - { - LogError(m_pProfile, - AGENT_LOADBALANCER_FAILOVER, - NULL, - m_aCluster[i_iFailedApplianceIndex].m_wsApplianceNetworkAddress, - "Server Busy - failing over"); - bServerError = true; - } - else if (ServerError(strError,iSoapErrno)) - { - bServerError = true; - } - else - { - if (i_iFailedApplianceIndex == AES_KEY_WRAP_SETUP_ERROR) - { - return AES_KEY_WRAP_SETUP_ERROR; - } - else - { - return CLIENT_SIDE_ERROR; // it is a client side problem, don't fail over - } - } - - // disable the failed Appliance in the profile, and - // re-sort the cluster array, so transactions in other threads - // will not send requests to the same failed Appliance -#if defined(METAWARE) - log_cond_printf(ECPT_LOG_AGENT, "CAgentLoadBalancer::Failover(): FailoverAttempts=%d\n", - m_pProfile->m_iFailoverAttempts); -#endif - for (i = 0; i < m_pProfile->m_iClusterNum; i++) - { - if (m_pProfile->m_aCluster[i].m_lApplianceID == - m_aCluster[i_iFailedApplianceIndex].m_lApplianceID) - { - m_pProfile->m_aCluster[i].m_iResponding = FALSE; - break; - } - } - - KMSClient_SortClusterArray(m_pProfile); - - // mark the failed Appliance as not responding (unlike the case - // above which is conditional on bServerError, this marking is - // only local to this transaction; it must be done to ensure that - // this transaction does not cycle in its fail-over loop.) - - m_aCluster[i_iFailedApplianceIndex].m_iResponding = FALSE; - - if (!CAgentLoadBalancer::FailOverLimit()) - { - // now try to fail over to all other Appliances that are - // apparently enabled and responding - - for (i = 0; i < m_iClusterNum; i++) - { - if (m_aCluster[i].m_iEnabled == TRUE && - m_aCluster[i].m_iResponding == TRUE && - m_aCluster[i].m_iKMALocked == FALSE) - { - Log(AGENT_LOADBALANCER_FAILOVER, - NULL, - m_aCluster[i].m_wsApplianceNetworkAddress, - "Failing over to this addr"); - - return i; - } - } - - // now retry KMAs previously reported as not responding - - m_iLastAttemptedWhenNoneResponding++; - - if (m_iLastAttemptedWhenNoneResponding >= m_iClusterNum) - { - m_iLastAttemptedWhenNoneResponding = m_iLastAttemptedWhenNoneResponding % m_iClusterNum; - } - - Log(AGENT_LOADBALANCER_FAILOVER, - NULL, - m_aCluster[m_iLastAttemptedWhenNoneResponding].m_wsApplianceNetworkAddress, - "Failing over to retry this addr"); - - return m_iLastAttemptedWhenNoneResponding; - } - else - { - Log(AGENT_LOADBALANCER_FAILOVER, - NULL, - NULL, - "Failover limit reached"); - } - - return m_bFIPS ? NO_FIPS_KMA_AVAILABLE : NO_KMA_AVAILABLE; -} - -void CAgentLoadBalancer::UpdateResponseStatus(int i_iIndex) -{ - bool bStatusChanged = false; - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) m_pProfile->m_pLock); - - // enable the responding Appliance in the profile, and - // re-sort the cluster array, so transactions in other threads - // will not send requests to the same failed Appliance - - for (int i = 0; i < m_pProfile->m_iClusterNum; i++) - { - if (m_pProfile->m_aCluster[i].m_lApplianceID == - m_aCluster[i_iIndex].m_lApplianceID) - { - if (m_pProfile->m_aCluster[i].m_iResponding == FALSE) - { - bStatusChanged = true; - } - m_pProfile->m_aCluster[i].m_iResponding = TRUE; - break; - } - } - - // only resort if the responding status actually changed - if (bStatusChanged) - { - KMSClient_SortClusterArray(m_pProfile); - } - - // mark the Appliance as now responding - m_aCluster[i_iIndex].m_iResponding = TRUE; - - return; -} - -Long64 CAgentLoadBalancer::GetKMAID ( - int i_iIndex) -{ - if (i_iIndex < 0 || i_iIndex >= m_iClusterNum) - { - return -1; - } - - return m_aCluster[i_iIndex].m_lApplianceID; -} - -CAgentLoadBalancer::KWKEntry *CAgentLoadBalancer::GetKWK ( - Long64 i_lKMAID) -{ - if (i_lKMAID == -1) - { - return NULL; - } - - for (int i = 0; i < m_iKWKEntryNum && i < KMS_MAX_CLUSTER_NUM; i++) - { - if (m_aKWKEntries[i] != NULL && - m_aKWKEntries[i]->m_lKMAID == i_lKMAID ) - { - return m_aKWKEntries[i]; - } - } - - return NULL; -} - -CAgentLoadBalancer::KWKEntry *CAgentLoadBalancer::CreateKWK ( - Long64 i_lKMAID, - struct soap * const i_pstSoap, - const char * const i_sURL, - bool * const o_pbClientAESKeyWrapSetupError) -{ - FATAL_ASSERT(i_pstSoap); - FATAL_ASSERT(i_sURL); - - int bSuccess = FALSE; - KWKEntry *oKWKEntry = new KWKEntry; - - oKWKEntry->m_lKMAID = i_lKMAID; - *o_pbClientAESKeyWrapSetupError = false; - - bSuccess = GetPseudorandomBytes(sizeof (oKWKEntry->m_acKWK), - oKWKEntry->m_acKWK); - if (!bSuccess) - { - Log(AUDIT_CLIENT_AGENT_CREATE_KWK_RNG_ERROR, - NULL, - NULL, - "Error from RNG"); - *o_pbClientAESKeyWrapSetupError = true; - delete(oKWKEntry); - return NULL; - } - -#if defined(DEBUG) - char sHexKWK[2*KMS_MAX_KEY_SIZE+1]; - ConvertBinaryToUTF8HexString( sHexKWK, oKWKEntry->m_acKWK, sizeof (oKWKEntry->m_acKWK)); -#if defined(METAWARE) - log_printf("CAgentLoadBalancer::CreateKWK(): KWK hex=%s\n", - sHexKWK); -#else -// printf("CAgentLoadBalancer::CreateKWK(): KWK hex=%s\n", -// sHexKWK); -#endif -#endif - - CPublicKey oPublicKEK; - - bSuccess = GetKWKWrappingKey(i_pstSoap, i_sURL, &oPublicKEK); - - if (!bSuccess) - { - // GetKWKWrappingKey logs errors - - if (!ServerError(GET_SOAP_FAULTSTRING(i_pstSoap),i_pstSoap->errnum)) - { - *o_pbClientAESKeyWrapSetupError = true; - } - delete(oKWKEntry); - return NULL; - } - - unsigned char acWrappedKWK[MAX_RSA_PUB_KEY_LENGTH]; - int iWrappedKWKLength; - bSuccess = oPublicKEK.Encrypt(sizeof (oKWKEntry->m_acKWK), - oKWKEntry->m_acKWK, (unsigned char *) acWrappedKWK, &iWrappedKWKLength); - - if (!bSuccess) - { - Log(AUDIT_CLIENT_AGENT_CREATE_KWK_PUBLIC_ENCRYPT_ERROR, - NULL, - NULL, - "Error encrypting KWK with KMA public key"); - *o_pbClientAESKeyWrapSetupError = true; - delete(oKWKEntry); - return NULL; - } -//#if defined(DEBUG) && !defined(METAWARE) -// char sHexWrappedKWK[2*MAX_RSA_PUB_KEY_LENGTH+1]; -// ConvertBinaryToUTF8HexString( sHexWrappedKWK, acWrappedKWK, iWrappedKWKLength); -// printf("CAgentLoadBalancer::CreateKWK(): wrapped KWK hex=%s\n", -// sHexWrappedKWK); -//#endif - - // register the new KWK - bSuccess = RegisterKWK(iWrappedKWKLength, acWrappedKWK, i_pstSoap, - i_sURL, oKWKEntry->m_acKWKID); - - if (!bSuccess) - { - // RegisterKWK logs errors - if (!ServerError(GET_SOAP_FAULTSTRING(i_pstSoap), i_pstSoap->error)) - { - *o_pbClientAESKeyWrapSetupError = true; - } - delete(oKWKEntry); - return NULL; - } - - // save the new KWK entry in an empty slot in the array - for (int i=0; i < m_iKWKEntryNum && i < KMS_MAX_CLUSTER_NUM; i++) - { - if (m_aKWKEntries[i] == NULL) - { - m_aKWKEntries[i] = oKWKEntry; - return oKWKEntry; - } - } - - // no empty slots so add it to the end - m_aKWKEntries[m_iKWKEntryNum++] = oKWKEntry; - - return oKWKEntry; -} - -void CAgentLoadBalancer::DeleteKWKEntry(Long64 i_lKMAID) -{ - for (int i=0; i < m_iKWKEntryNum && i < KMS_MAX_CLUSTER_NUM; i++) - { - if (m_aKWKEntries[i] && m_aKWKEntries[i]->m_lKMAID == i_lKMAID) - { - delete(m_aKWKEntries[i]); - m_aKWKEntries[i] = NULL; - return; - } - } - // should not occur - FATAL_ASSERT(0); - return; -} - -bool CAgentLoadBalancer::AESKeyWrapSupported (int i_iIndex) -{ - if (i_iIndex < 0 || i_iIndex >= m_iClusterNum) - { - return false; - } - return (strcmp(m_aCluster[i_iIndex].m_sKMAVersion, - FIPS_COMPATIBLE_KMA_VERSION) >= 0); -} - -int CAgentLoadBalancer::GetKWKID ( - int i_Index, - Long64 i_lKMAID, - struct soap * const i_pstSoap, - UTF8_KEYID o_pKWKID, - bool * const o_pbClientAESKeyWrapSetupError) -{ - FATAL_ASSERT(i_Index >= 0 && i_Index <= m_iClusterNum); - FATAL_ASSERT(i_lKMAID != 0); - FATAL_ASSERT(i_pstSoap); - FATAL_ASSERT(o_pKWKID); - FATAL_ASSERT(o_pbClientAESKeyWrapSetupError); - - *o_pbClientAESKeyWrapSetupError = false; - - // check if the KMA for this cluster index is at a version supporting - // AES key wrap - if (!AESKeyWrapSupported(i_Index)) - { - strcpy(o_pKWKID, ""); - return TRUE; - } - - // AES Key Wrap Mode - - struct KWKEntry* pKWKentry = GetKWK(i_lKMAID); - - if (pKWKentry == NULL) - { - const char* sURL = GetHTTPSURL( - i_Index, - m_pProfile->m_iPortForAgentService); - - pKWKentry = CreateKWK(i_lKMAID, i_pstSoap, sURL, o_pbClientAESKeyWrapSetupError); - - if (pKWKentry == NULL) - { - return FALSE; - } - } - -#if defined(DEBUG) && defined(METAWARE) - log_printf("CAgentLoadBalancer::GetKWKID(): KWK IDhex=%s\n", - pKWKentry->m_acKWKID, - sizeof (UTF8_KEYID)); -#endif - - strncpy(o_pKWKID, pKWKentry->m_acKWKID, sizeof(UTF8_KEYID)); - o_pKWKID[sizeof(UTF8_KEYID)-1] = '\0'; - - return TRUE; -}; - -int CAgentLoadBalancer::GetKWKWrappingKey ( - struct soap * const i_pstSoap, - const char * const i_sURL, - CPublicKey * const o_opPublicKEK) -{ - FATAL_ASSERT(i_pstSoap); - FATAL_ASSERT(i_sURL); - FATAL_ASSERT(o_opPublicKEK); - - int bSuccess = TRUE; - struct KMS_Agent::KMS_Agent__GetAgentKWKPublicKeyResponse oResponse; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__GetAgentKWKPublicKey( - const_cast (i_pstSoap), - i_sURL, - NULL, - oResponse) == SOAP_OK; - - if (!bSuccess) - { - GetSoapFault(sSoapFaultMsg, const_cast (i_pstSoap)); - GetPeerNetworkAddress(sKmaAddress, const_cast (i_pstSoap)); - - LogError(m_pProfile, - AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - - return FALSE; - } - - // Validate the response structure - if (bSuccess) - { - if (oResponse.KWKPublicKey.__ptr == NULL - || oResponse.KWKPublicKey.__size < 1) - { - bSuccess = FALSE; - - GetPeerNetworkAddress(sKmaAddress, const_cast (i_pstSoap)); - - LogError(m_pProfile, - AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_INVALID_KEY_RESPONSE, - NULL, - sKmaAddress, - NULL); - } - else - { - bSuccess = o_opPublicKEK->Load(oResponse.KWKPublicKey.__ptr, - oResponse.KWKPublicKey.__size, PKI_FORMAT); - if (!bSuccess) - { - GetPeerNetworkAddress(sKmaAddress, const_cast (i_pstSoap)); - - LogError(m_pProfile, - AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_INVALID_RSA_PUB_KEY, - NULL, - sKmaAddress, - NULL); - } - } - } - - // Note: no SOAP cleanup as caller's environment will get destroyed - - return bSuccess; -}; - -int CAgentLoadBalancer::RegisterKWK ( - int i_iWrappedKWKSize, - const unsigned char * const i_acWrappedKWK, - struct soap * const i_pstSoap, - const char * const i_sURL, - UTF8_KEYID o_acUTF8KeyID) -{ - FATAL_ASSERT(i_iWrappedKWKSize > 0); - FATAL_ASSERT(i_acWrappedKWK); - FATAL_ASSERT(i_pstSoap); - FATAL_ASSERT(i_sURL); - FATAL_ASSERT(o_acUTF8KeyID); - - int bSuccess; - - struct KMS_Agent::xsd__hexBinary oKWK; - -#if defined(DEBUG) && defined(METAWARE) - char sHexWrappedKWK[512]; - ConvertBinaryToUTF8HexString( sHexWrappedKWK, i_acWrappedKWK, i_iWrappedKWKSize); - log_printf("CAgentLoadBalancer::RegisterKWK(): Wrapped KWK hex=%s, len=%d\n", - sHexWrappedKWK, i_iWrappedKWKSize); -#endif - - if (!PutBinaryIntoSoapBinary(i_pstSoap, - i_acWrappedKWK, - i_iWrappedKWKSize, - oKWK.__ptr, - oKWK.__size)) - { - return FALSE; - } - - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - struct KMS_Agent::KMS_Agent__RegisterAgentKWKResponse oResponse; - - bSuccess = KMS_Agent::soap_call_KMS_Agent__RegisterAgentKWK( - const_cast (i_pstSoap), - i_sURL, NULL, oKWK, oResponse) == SOAP_OK; - - if (bSuccess) - { - // verify response - if (oResponse.AgentKWKID && - strlen(oResponse.AgentKWKID) == 2 * KMS_KWK_KEY_ID_SIZE) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("CAgentLoadBalancer::RegisterKWK(): KWK ID hex=%s\n", - oResponse.AgentKWKID, - sizeof (UTF8_KEYID)); -#endif - strncpy(o_acUTF8KeyID, oResponse.AgentKWKID, sizeof(UTF8_KEYID)); - o_acUTF8KeyID[sizeof(UTF8_KEYID)-1] = '\0'; - } - else - { - GetPeerNetworkAddress(sKmaAddress, const_cast (i_pstSoap)); - GetSoapFault(sSoapFaultMsg, const_cast (i_pstSoap)); - - Log(AUDIT_CLIENT_AGENT_REGISTER_KWK_INVALID_KEYID_RESPONSE, - NULL, - sKmaAddress, - sSoapFaultMsg); - bSuccess = FALSE; - } - } - else - { - GetPeerNetworkAddress(sKmaAddress, const_cast (i_pstSoap)); - GetSoapFault(sSoapFaultMsg, const_cast (i_pstSoap)); - - Log(AUDIT_CLIENT_AGENT_REGISTER_KWK_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg); - bSuccess = FALSE; - } - - // Note: Clean up SOAP must happen in caller, not here - - return bSuccess; - -}; - -bool CAgentLoadBalancer::AESKeyUnwrap ( - int * const io_pIndex, - const WRAPPED_KEY i_pAESWrappedKey, - KEY o_pPlainTextKey) -{ - FATAL_ASSERT(io_pIndex); - FATAL_ASSERT(*io_pIndex >= 0); - FATAL_ASSERT(o_pPlainTextKey); - FATAL_ASSERT(i_pAESWrappedKey); - - struct KWKEntry * pKWKEntry = GetKWK(GetKMAID(*io_pIndex)); - - if (pKWKEntry == NULL) - { - Log(AGENT_LOADBALANCER_AESKEYUNWRAP_GETKWK_RETURNED_NULL, - NULL, - m_aCluster[*io_pIndex].m_wsApplianceNetworkAddress, - NULL); - *io_pIndex = CAgentLoadBalancer::AES_KEY_UNWRAP_ERROR; - - return false; - } - -#if defined(DEBUG) && defined(METAWARE) - char sHexKWK[2*KMS_MAX_KEY_SIZE+1]; - ConvertBinaryToUTF8HexString( sHexKWK, pKWKEntry->m_acKWK, sizeof (pKWKEntry->m_acKWK)); - log_printf("CAgentLoadBalancer::AESKeyUnwrap(): KWK hex=%s\n", - sHexKWK); -#endif - - if (aes_key_unwrap(pKWKEntry->m_acKWK, - sizeof (pKWKEntry->m_acKWK), - i_pAESWrappedKey, - o_pPlainTextKey, 4) != 0) - { - Log(AGENT_LOADBALANCER_AESKEYUNWRAP_KEY_UNWRAP_FAILED, - NULL, - m_aCluster[*io_pIndex].m_wsApplianceNetworkAddress, - NULL); - *io_pIndex = CAgentLoadBalancer::AES_KEY_UNWRAP_ERROR; - return false; - } - - return true; -} - -/*--------------------------------------------------------------------------- - * Function: KMSClient_SortClusterArray - * - *--------------------------------------------------------------------------*/ -void CAgentLoadBalancer::KMSClient_SortClusterArray (KMSClientProfile * const i_pProfile) -{ - FATAL_ASSERT(i_pProfile); - - CAutoMutex oAutoMutex((K_MUTEX_HANDLE) i_pProfile->m_pLock); - - int i; - - - // adjust loads according to availability, site and FIPS compatibility - for (i = 0; i < i_pProfile->m_iClusterNum; i++) - { - if ((i_pProfile->m_aCluster[i].m_iEnabled == FALSE - || i_pProfile->m_aCluster[i].m_iResponding == FALSE - || i_pProfile->m_aCluster[i].m_iKMALocked)) - { - ((unsigned char*) &(i_pProfile->m_aCluster[i].m_lLoad))[sizeof (int)+1] = 1; - } - else - { - ((unsigned char*) &(i_pProfile->m_aCluster[i].m_lLoad))[sizeof (int)+1] = 0; - } - - if (strcmp(i_pProfile->m_aCluster[i].m_wsApplianceSiteID, - i_pProfile->m_wsEntitySiteID) != 0) - { - ((unsigned char*) &(i_pProfile->m_aCluster[i].m_lLoad))[sizeof (int)] = 1; - } - else - { - ((unsigned char*) &(i_pProfile->m_aCluster[i].m_lLoad))[sizeof (int)] = 0; - } - - if ( m_bFIPS && - !FIPScompatibleKMA(i_pProfile->m_aCluster[i].m_sKMAVersion)) - { - ((unsigned char*) &(i_pProfile->m_aCluster[i].m_lLoad))[sizeof (int)+2] = 1; - } - else - { - ((unsigned char*) &(i_pProfile->m_aCluster[i].m_lLoad))[sizeof (int)+2] = 0; - } - } - - // sort ascending by load - - // gnome sort: the simplest sort algoritm - // http://www.cs.vu.nl/~dick/gnomesort.html - - //void gnomesort(int n, int ar[]) { - // int i = 0; - // - // while (i < n) { - // if (i == 0 || ar[i-1] <= ar[i]) i++; - // else {int tmp = ar[i]; ar[i] = ar[i-1]; ar[--i] = tmp;} - // } - //} - - i = 0; - while (i < i_pProfile->m_iClusterNum) - { - if (i == 0 || i_pProfile->m_aCluster[i - 1].m_lLoad <= i_pProfile->m_aCluster[i].m_lLoad) - { - i++; - } - else - { - KMSClusterEntry tmp = i_pProfile->m_aCluster[i]; - i_pProfile->m_aCluster[i] = i_pProfile->m_aCluster[i - 1]; - i_pProfile->m_aCluster[--i] = tmp; - } - } -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.h --- a/usr/src/lib/libkmsagent/common/KMSAgentLoadBalancer.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,339 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentLoadBalancer.h - */ - -#ifndef KMS_AGENT_LOAD_BALANCER_H -#define KMS_AGENT_LOAD_BALANCER_H -typedef char UTF8_KEYID[2*KMS_KWK_KEY_ID_SIZE+1]; - -class CAgentLoadBalancer -{ -public: - - /** - * the load balancer retains a pointer to the specified profile - */ - CAgentLoadBalancer( - KMSClientProfile * const i_pProfile ); - - ~CAgentLoadBalancer (); - - /** - * This method must be called at the top of each agent library transaction. - * Responsibilities: - *
    - *
  • clear profile failover attempts - *
  • sets transaction start time - *
  • performs discovery at the frequency specified in the profile - *
  • maintains the status of KMAs within the cluster - *
- * @return a random KMA from the "available" KMAs within the agent's site - * or a random KMA from any of the "available" KMA's if none are available - * within the agent's site. - * When operating in FIPS mode then only KMAs that are - * FIPS compatible will be selected, see FIPScompatibleKMA. - * Available KMAs - * are KMAs that are enabled and responding. If no FIPS compatible KMAs - * are available then NO_FIPS_KMA_AVAILABLE is returned. - * When m_iClusterDiscoveryFrequency is set to 0 in the profile - * then load balancing and automatic discovery - * are disabled so the default KMA is returned. - */ - int Balance(); - - /** - * @return a KMA from the cache that has affinity with the specified DataUnitID, - * if possible, otherwise return a KMA from Balance. See - * Balance for FIPS_MODE behavior and disabled load balancing. - */ - int BalanceByDataUnitID( - const unsigned char * const i_pDataUnitID, - int i_iDataUnitIDMaxLen ); - - /** - * @return a KMA from the cache that has affinity with the specified DataUnitKeyID, - * if possible, otherwise return a KMA from Balance. See - * Balance for FIPS_MODE behavior and disabled load balancing. - */ - int BalanceByDataUnitKeyID( - const unsigned char * const i_pDataUnitKeyID, - int i_iDataUnitKeyIDMaxLen ); - - enum ERRORS - { - CLIENT_SIDE_ERROR = -1, - NO_KMA_AVAILABLE = -2, - AES_KEY_UNWRAP_ERROR = -3, - AES_KEY_WRAP_SETUP_ERROR = -4, - NO_FIPS_KMA_AVAILABLE = -5, - KWK_NOT_REGISTERED = -6 - }; - - /** - * Makes a failover determination based upon soap error information and profile settings. - * Responsibilities: - *
    - *
  • updates the status of the failed KMA within the profile's cluster array - *
  • Client Faults - no failover, same KMA will be returned if a Server Busy error - * occurred and - * either the transaction timeout has not been exceeded or failover limit has not been exceeded - *
  • Server Faults - a failover KMA is chosen if the limit specified set in the profile - * has not been exceed - *
  • For CLIENT_ERROR_AGENT_KWK_NOT_REGISTERED the KWK is deleted and - * i_iFailedApplianceIndex is returned. The caller should re-regsiter the - * KWK with this appliance. - *
- * If all KMAs are disabled or non-responding then give up. - *
  • increments profile failover attempts - * - * @param i_iFailedApplianceIndex the index within the profile's cluster array of the failed KMA - * @param i_pstSoap the gSoap runtime from which error information can be analyzed - * @return index of KMA in cluster to failover to, CLIENT_SIDE_ERROR to give up due to client side error, - * NO_KMA_AVAILABLE or NO_FIPS_KMA_AVAILABLE if running in FIPS_MODE - * if server error but no KMA to failover to - */ - int FailOver( - int i_iFailedApplianceIndex, - struct soap *i_pstSoap ); - - /** - * Updates the response status for the specified KMA to responding. - */ - void UpdateResponseStatus(int i_iIndex); - - /** - * @return HTTPS protocol URL for the KMA referenced by the specified index entry within this - * object's cluster array and the specified web service port. - */ - char* GetHTTPSURL( - int i_iIndex, - int i_iPort ); - /** - * @return HTTP protocol URL for the KMA referenced by the specified index entry within this - * object's cluster array and the specified web service port. - */ - char* GetHTTPURL( - int i_iIndex, - int i_iPort ); - - /** - * @return the KMA IP address for the specified index entry within this object's cluster - * array. - */ - char* GetApplianceNetworkAddress( - int i_iIndex ); - - /** - * @return the KMA ID for the specified index entry within this - * object's cluster. Returns -1 if an invalid - * index is provided - */ - Long64 GetKMAID( - int i_iIndex ); - - /** - * retrieves the KWKID for a specified KMA in the cluster. - * @param i_Index element in this object's KMS cluster as returned by - * one of the Balance methods or the Failover method. - * @param i_lKMAID the KMAID for which a KWK is desired - * @param i_pstSoap non-NULL pointer to an initialized gSoap runtime to be - * used, if necessary, for KWK registration with the KMA. - * @param o_pKWKID pointer to UTF8 hex character string to receive the KWKID - * for the specified KMA in the cluster. - * @param o_pbClientAESKeyWrapSetupError this arg gets set to true if an - * error occurs that is client side related and pertaining to establishment - * of the AES Key Wrapping Keys. - * If the KMS cluster does not support AES KeyWrap o_pKWKID is set to - * a zero-length string. A new KWK may be registered with the KMA if a value - * has not yet been registered for this instance of CAgentLoadBalancer. - * @return TRUE if successful and FALSE otherwise with soap fault available - * in the gSoap runtime provided by the caller and io_pIndex set to - * AES_KEY_WRAP_SETUP_ERROR. Use ServerError() to - * determine if failover is appropriate. - */ - int GetKWKID( - int i_Index, - Long64 i_lKMAID, - struct soap * const i_pstSoap, - UTF8_KEYID o_pKWKID, - bool * const o_pbClientAESKeyWrapSetupError); - - /** - * performs AES Key unwrapping according to RFC3394. - * @param io_pIndex Cluster index for KMA that wrapped the key. On error - * the cluster index is set to AES_KEY_UNWRAP_ERROR - * @param i_pAESWrappedKey pointer to the wrapped key - * @param o_pPlainTextKey point to buffer to receive unwrapped key - * @return true for success, false otherwise and sets *io_pIndex to - * AES_KEY_UNWRAP_ERROR - */ - bool AESKeyUnwrap ( - int * const io_pIndex, - const WRAPPED_KEY i_pAESWrappedKey, - KEY o_pPlainTextKey ); - - /** - * @return true if the KMA referenced by the specified cluster - * index supports AES key wrap - */ - bool AESKeyWrapSupported ( - int i_iIndex); - -protected: - /** - * @return the cluster array index of the KMA with the specified IP address - * or CLIENT_SIDE_ERROR if the KMA is not responding or not enabled - */ - int FindIndexByNetworkAddress ( - char* i_wsApplianceNetworkAddress); - -private: - - /** - * Sorts the cluster array ascending by load. - * Before sorting, the other site's KMAs' load are added by 0x10000000000 and - * the disabled/non-responding/locked KMAs are added by 0x1000000000000 and KMAs - * not matching the agent's FIPS setting the load is bumped by 0x100000000000000. - * This ensures that KMAs - * in the current site are sorted before KMAs in other sites and - * disabled/non-responding/locked KMAs are after those enabled KMAs. When the agent is - * in FIPS mode the non-FIPS KMAs are sorted last. - */ - void KMSClient_SortClusterArray ( - KMSClientProfile * const i_pProfile); - - static const int MAX_RSA_PUB_KEY_LENGTH = 256; - int m_iClusterNum; - - /** - * this array is reinitialized from the profile's Cluster array each time Balance() is called. - * Failover() will resort the profile's Cluster array so this array may not - * match the sort order in the profile - */ - KMSClusterEntry m_aCluster[KMS_MAX_CLUSTER_NUM]; - KMSClientProfile *m_pProfile; - char m_sURL[KMS_MAX_URL+1]; - unsigned int m_iTransactionStartTimeInMilliseconds; - bool m_bFIPS; - - /** - * number of elements in KWKEntries - */ - int m_iKWKEntryNum; - - /** - * in a failover scenario, if all KMAs are not responding this - * member variable tracks the index into m_aCluster of the last KMA attempted. - */ - int m_iLastAttemptedWhenNoneResponding; - - /** - * @return true if the failover limit has been exceeded. If failover - * limit of -1 is specified in the profile then always return false. - */ - bool FailOverLimit(void); - - /** - * \struct for each KMA used in a profile session there will be - * a KWKEntry in KWKEntries. These values do not persist - * beyond a profile session - */ - struct KWKEntry - { - /** - * The KMA associated with this KWK. This KMA - * receives the KWK via the KMS_Agent__RegisterAgentKWK() - * agent service which returns the KMA assigned value for - * m_acKWKID - */ - Long64 m_lKMAID; - - /** - * the KeyID for this KWK, provided by the KMA - */ - UTF8_KEYID m_acKWKID; - - /** - * the plaintext value of the AES KWK - */ - KEY m_acKWK; - }; - - /** - * set of KWKEntry ptrs for KMAs used in this profile session. - */ - struct KWKEntry * m_aKWKEntries[KMS_MAX_CLUSTER_NUM]; - - /** - * retrieve the Key Wrapping Key for a KMA - * @param i_lKMAID KMA identifier, must not be equal to -1 - * @return pointer to the KWKEntry for the specified KMAID, NULL - * if the entry does not exist - */ - struct KWKEntry *GetKWK( - Long64 i_lKMAID ); - - /** - * creates a new KWKEntry on the heap and store a ptr to it in an - * unused slot in m_aKWKEntries. - * @return NULL on error, otherwise a pointer to the newly - * created KWKEntry - */ - struct KWKEntry *CreateKWK( - Long64 i_lKMAID, - struct soap * const i_pstSoap, - const char * const i_sURL, - bool * const o_pbClientAESKeyWrapSetupError); - - /** - * free the KWKEntry corresponding to the specified KMA ID - * and set the slot it occupied in m_aKWKEntries to NULL. - */ - void DeleteKWKEntry(Long64 i_lKMAID); - - /** - * retrieve the RSA public key to be used for wrapping a KWK - */ - int GetKWKWrappingKey( - struct soap * const i_pstSoap, - const char * const i_sURL, - CPublicKey * const o_opPublicKEK ); - - /** - * register the KWK with a specified KMA and return the KWK ID - */ - int RegisterKWK( - int i_iWrappedKWKSize, - const unsigned char * const i_acWrappedKWK, - struct soap * const i_pstSoap, - const char * const i_sURL, - UTF8_KEYID o_acUTF8KeyID ); - -}; - -#endif //KMS_AGENT_LOAD_BALANCER_H diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKICert.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentPKICert.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentPKICert.cpp - * - * This is an implementation of PKICommon.h CCertificate class. - */ - -#include -#include -#include -#include - -#ifdef KMSUSERPKCS12 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#include "SYSCommon.h" -#include "KMSAgentPKICommon.h" -#include "KMSAgentPKIimpl.h" - -///////////////////////////////////////////////////////////////////////// -// CCertificate -// -CCertificate::CCertificate() -{ - m_pCertImpl = InitializeCertImpl(); - - FATAL_ASSERT( m_pCertImpl != NULL ); -} - - -CCertificate::~CCertificate() -{ - if ( m_pCertImpl != NULL ) - { - FinalizeCertImpl( m_pCertImpl ); - } -} - -/** - * Save - This OVERLOADED method saves the Cert into a file - * @param i_pcFileName - filename of file to save into - * @param i_iFormat - IGNORED - * - * @returns bool - success (true = successful) - */ -bool CCertificate::Save( const char * const i_pcFileName, - int i_iFormat ) -{ - return SaveX509CertTofile( m_pCertImpl, i_pcFileName ); -} - -/** - * Save - This OVERLOADED method saves the Cert into a buffer - * @param i_pcBuffer - buffer to save into - * @param i_BufferLength - length of buffer to save - * @param o_pActualLength - length of buffer saved - * @param i_iFormat - IGNORED - * - * @returns bool - success (true = successful) - */ -bool CCertificate::Save( unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - int i_iFormat ) -{ - return SaveX509CertToBuffer( m_pCertImpl, - i_pcBuffer, - i_iBufferLength, - o_pActualLength ); -} - -/** - * Load - * This OVERLOADED method loads the Cert from a FILE - * @param i_pcFileName - name of file to load from - * @param i_iFormat - IGNORED - * - * @returns bool - success (true = successful) - */ - -bool CCertificate::Load( const char * const i_pcFileName, - int i_iFormat ) -{ - return LoadX509CertFromFile( m_pCertImpl, i_pcFileName ); -} - -/** - * Load - * This OVERLOADED method loads the Cert from a buffer - * @param i_pcBuffer - buffer to load from - * @param i_iLength - amount to load from buffer - * @param i_iFormat - IGNORED - * - * @returns bool - success (true = successful) - */ -bool CCertificate::Load( unsigned char * const i_pcBuffer, - int i_iLength, - int i_iFormat ) -{ - return LoadX509CertFromBuffer( m_pCertImpl, i_pcBuffer, i_iLength ); -} - -/** - * Dump - * dump the readable format to standard output - * @returns bool - success (true = successful) - */ -bool CCertificate::Dump() -{ - return PrintX509Cert( m_pCertImpl ); -} - -#ifdef KMSUSERPKCS12 -bool -CCertificate::LoadPKCS12CertAndKey( - char *filename, - int i_iFormat, - CPrivateKey *i_pPrivateKey, - char *i_pPassphrase) -{ - BIO *pFileBio= NULL; - X509 *pRequest =NULL; - - pFileBio = BIO_new(BIO_s_file()); - if (pFileBio == NULL) - return false; - if (!BIO_read_filename(pFileBio, filename)) { - BIO_free(pFileBio); - return (false); - } - - switch( i_iFormat ) { - case FILE_FORMAT_DER: - - pRequest=d2i_X509_bio(pFileBio, NULL); - if (pRequest == NULL) { - // fixme: log: invalid certificate format - return false; - } - break; - - case FILE_FORMAT_PEM: - - pRequest=PEM_read_bio_X509(pFileBio, NULL, NULL, NULL); - if (pRequest == NULL) { - // fixme: log: invalid certificate format - return false; - } - break; - - case FILE_FORMAT_PKCS12: - PKCS12* pPKCS12Request = d2i_PKCS12_bio(pFileBio, NULL); - if (pPKCS12Request == NULL) { - // fixme: log: invalid certificate format - return false; - } - - // convert PKCS12 to X509 - EVP_PKEY *pKeyTemp = NULL; - if (!PKCS12_parse(pPKCS12Request, i_pPassphrase, - &pKeyTemp, &pRequest, NULL)) { - // fixme: log: invalid certificate format or passphrase - PKCS12_free(pPKCS12Request); - return false; - } - - if (pKeyTemp && i_pPrivateKey) { - i_pPrivateKey->SetNative((void *)pKeyTemp); - } else if (pKeyTemp) - EVP_PKEY_free(pKeyTemp); - - PKCS12_free(pPKCS12Request); - break; - } - if (pRequest != NULL) { - SetCert(m_pCertImpl, (void *)pRequest); - } - - return (true); -} - -void * -CCertificate::SaveCertToPKCS12MemoryBIO( - CPrivateKey* i_pPrivateKey, - char *i_sPassphrase) -{ - BIO *pMemBio = NULL; - int iReturn; - - // create memory BIO - pMemBio = BIO_new(BIO_s_mem()); - - if(pMemBio == NULL) - { - //fixme: log -- no memory - return NULL; - } - - PKCS12 *p12 = PKCS12_create(i_sPassphrase, - NULL, - (EVP_PKEY *)i_pPrivateKey->GetNative(), - (X509 *)GetCert(m_pCertImpl), - NULL, - 0, - 0, - 0, - 0, - 0); - if ( ! p12 ) - { - return NULL; - } - - // now pMemBIO != NULL, remember to free it before exiting - iReturn = i2d_PKCS12_bio(pMemBio, p12); - - if(!iReturn) // return 0: means error occurs - { - //fixme: log -- could not export private key - BIO_free(pMemBio); - return NULL; - } - - return (void *)pMemBio; -} - -bool -CCertificate::SavePKCS12( - unsigned char *i_pcBuffer, - int i_iBufferLength, - int *o_pActualLength, - CPrivateKey* i_pPrivateKey, - char* i_sPassphrase ) -{ - BIO *pMemBio = NULL; - char *pData = NULL; - int iLength; - - // sanity check - if(i_pcBuffer == NULL) return false; - if(i_iBufferLength <= 0) return false; - if(o_pActualLength == NULL) return false; - - // create memory BIO - pMemBio = (BIO *)SaveCertToPKCS12MemoryBIO(i_pPrivateKey, i_sPassphrase); - - if(pMemBio == NULL) - { - //fixme: log -- no memory - return false; - } - - iLength = BIO_get_mem_data(pMemBio, &pData); - - // If the output buffer is a string, it needs to be NULL terminated - // So always append a NULL to the output - if(iLength + 1 > i_iBufferLength) - { - //fixme: log -- buffer too small - BIO_free(pMemBio); - return false; - } - // copy the data to given buffer - memcpy(i_pcBuffer, pData, iLength); - // NULL terminate the string - i_pcBuffer[iLength] = '\0'; - *o_pActualLength = iLength; - - // free memory - BIO_free(pMemBio); - - return true; -} -#endif /* PKCS12 */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKICertOpenSSL.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentPKICertOpenSSL.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,313 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentPKICertOpenSSL.cpp - */ - -#include -#include -#include - -#include "SYSCommon.h" -#include "KMSAgentPKIimpl.h" - -typedef struct X509control -{ - X509* pX509; -} X509control; - -void * InitializeCertImpl() -{ - X509control *pX509Control = (X509control *) malloc(sizeof(X509control)); - - if ( pX509Control != NULL ) - { - pX509Control->pX509 = NULL; - } - - return pX509Control; -} - -/** - * export the Cert to a memory BIO, if error, return NULL - */ -BIO* SaveCertToMemoryBIO( X509control* i_pX509control ) -{ - BIO *pMemBio = NULL; - int iReturn; - - // create memory BIO - pMemBio = BIO_new(BIO_s_mem()); - - if(pMemBio == NULL) - { - //fixme: log -- no memory - return NULL; - } - - //iReturn = PEM_write_bio_X509(pMemBio, m_pNative); - iReturn = PEM_write_bio_X509(pMemBio, i_pX509control->pX509); - - if(!iReturn) // return 0: means error occurs - { - //fixme: log -- could not export private key - BIO_free(pMemBio); - return NULL; - } - - return pMemBio; -} - -bool SaveX509CertTofile( - void* const i_pImplResource, - const char * const i_pcFileName ) -{ - FATAL_ASSERT( i_pImplResource != NULL && i_pcFileName ); - - X509control* pX509control = (X509control*)i_pImplResource; - // the BIO for output, need cleanup when exiting - BIO *pMemBio = NULL; - int iLength; - unsigned char *pData; - FILE *fp; - - // create memory BIO - pMemBio = SaveCertToMemoryBIO( pX509control ); - - if(pMemBio == NULL) - { - return false; - } - - // now pMemBIO != NULL, remember to free it before exiting - iLength = BIO_get_mem_data(pMemBio, &pData); - - // open the file - fp = fopen(i_pcFileName, "wb"); - if(fp == NULL) - { - //fixme: log -- could not open file for exporting Cert - BIO_free(pMemBio); - return false; - } - - fwrite(pData, 1, iLength, fp); - fclose(fp); - - BIO_free(pMemBio); // BIO_free close the file and clean the BIO - return true; -} - -bool SaveX509CertToBuffer( - void* const i_pImplResource, - unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength ) -{ - FATAL_ASSERT( i_pImplResource != NULL && - i_pcBuffer && - o_pActualLength && - i_iBufferLength > 0 ); - - X509control* pX509control = (X509control*)i_pImplResource; - - BIO *pMemBio = NULL; - char *pData = NULL; - int iLength; - - // create memory BIO - pMemBio = SaveCertToMemoryBIO( pX509control ); - - if( pMemBio == NULL ) - { - //fixme: log -- no memory - return false; - } - - iLength = BIO_get_mem_data( pMemBio, &pData ); - - // If the output buffer is a string, it needs to be NULL terminated - // So always append a NULL to the output - if(iLength + 1 > i_iBufferLength) - { - //fixme: log -- buffer too small - BIO_free(pMemBio); - return false; - } - // copy the data to given buffer - memcpy(i_pcBuffer, pData, iLength); - // NULL terminate the string - i_pcBuffer[iLength] = '\0'; - *o_pActualLength = iLength; - - // free memory - BIO_free(pMemBio); - - return true; -} - -/** - * import the Cert from a BIO, if error, return NULL - */ -bool LoadCertFromBIO(X509control* i_pX509control, BIO *i_pBio) -{ - X509 *pRequest = NULL; - - if (i_pX509control == NULL) return false; - - if(i_pBio == NULL) return false; - - //if(m_pNative != NULL) return false; // do not allow overwrite - if (i_pX509control->pX509 != NULL ) return false; - - pRequest=PEM_read_bio_X509(i_pBio, NULL, NULL, NULL); - - if (pRequest == NULL) - { - // fixme: log: invalid certificate format - return false; - } - //m_pNative = pRequest; - i_pX509control->pX509 = pRequest; - - return true; -} - -bool LoadX509CertFromFile( - void* const i_pImplResource, - const char * const i_pcFileName ) - -{ - X509control* pX509control = (X509control*) i_pImplResource; - if (pX509control == NULL) - { - return false; - } - - BIO *pFileBio=NULL; - bool bReturn; - - pFileBio=BIO_new(BIO_s_file()); - if (pFileBio == NULL) - { - //fixme: log -- no memory - return false; - } - - if (!BIO_read_filename(pFileBio,i_pcFileName)) - { - //fixme log -- could not open file - BIO_free(pFileBio); - return false; - } - - bReturn = LoadCertFromBIO(pX509control, pFileBio); - - BIO_free(pFileBio); - - return bReturn; -} - - -bool LoadX509CertFromBuffer( - void* const i_pImplResource, - void* const i_pX509Cert, - int i_iLength) - { - X509control* pX509control = (X509control*)i_pImplResource; - - if(pX509control == NULL) - { - return false; - } - - BIO *pMemBio; - bool bReturn; - // create a mem bio from the given buffer - // Note that BIO_new_mem_buf() creates a BIO which never destroy the memory - // attached to it. - pMemBio = BIO_new_mem_buf(i_pX509Cert, i_iLength); - if (pMemBio == NULL) - { - //fixme: log -- no memory - return false; - } - bReturn = LoadCertFromBIO(pX509control, pMemBio); - - BIO_free(pMemBio); - - return bReturn; -} - -void FinalizeCertImpl( void* i_pImplResource ) -{ - if ( i_pImplResource != NULL ) - { - free(i_pImplResource); - } -} - -bool PrintX509Cert( void* const i_pImplResource ) -{ - BIO *pMemBio; - char *pData; - int iLength,i; - X509control* pX509control = (X509control*)i_pImplResource; - pMemBio = BIO_new(BIO_s_mem()); - if(pMemBio == NULL) - { - return false; - } - - //X509_print(pMemBio,m_pNative); - X509_print(pMemBio, pX509control->pX509); - - iLength = BIO_get_mem_data(pMemBio, &pData); - - for(i = 0; i < iLength; i++) - { - printf("%c", pData[i]); - } - - BIO_free(pMemBio); - - return true; - -} -#ifdef K_SOLARIS_PLATFORM -void *GetCert(void* i_pImplResource ) -{ - X509control* pX509control = (X509control*)i_pImplResource; - return ((void *)pX509control->pX509); -} - -void SetCert(void* i_pImplResource, void *cert) -{ - X509control* pX509control = (X509control*)i_pImplResource; - pX509control->pX509 = (X509 *)cert; - return; -} -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKICommon.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentPKICommon.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentPKICommon.cpp - */ -#include - -#include "SYSCommon.h" -#include "KMSAgentPKICommon.h" -#include "KMSAgentStringUtilities.h" - -#include "KMSAgent_direct.h" - - -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// - -CPKI::CPKI() -{ - m_iKeyLength = DEFAULT_KEY_SIZE; - - // used for CA - m_pCACertificate = NULL; - m_pCAPrivateKey = NULL; -} - -// BEN - make these -// global lengths -int iLength1 = 0; -int iLength2 = 0; - -// THIS CAN'T BE STACK DATA - TOO BIG -static unsigned char aTempBuffer[MAX_CERT_SIZE + MAX_KEY_SIZE]; -#ifdef METAWARE -static char aNotherTempBuffer[50]; -#endif - -// used by StoreAgentPKI - KMSAgentStorage.cpp - -bool CPKI::ExportCertAndKeyToFile( - CCertificate* const i_pCertificate, - CPrivateKey* const i_pPrivateKey, - const char* const i_pcFileName, - const char* const i_sPassphrase, - EnumPKIFileFormat i_eFileFormat ) -{ - FATAL_ASSERT( i_pCertificate && i_pPrivateKey && i_pcFileName ); - - - memset( aTempBuffer, 0, MAX_CERT_SIZE + MAX_KEY_SIZE ); - -#ifdef KMSUSERPKCS12 - if ( i_eFileFormat == FILE_FORMAT_PKCS12 ) - { - if ( !i_pCertificate->SavePKCS12(aTempBuffer, - MAX_CERT_SIZE, - &iLength1, - i_pPrivateKey, - (char*)i_sPassphrase ) ) - { - return false; - } - } else { -#endif - - // Overloaded Save method implemented in KMSAgentPKICert.cpp - // this method saves Certificate to the temporary buffer, not a file - // but a side effect is to get the actual file length - if ( !i_pCertificate->Save(aTempBuffer, - MAX_CERT_SIZE, - &iLength1, /* returned - actual length - written */ - i_eFileFormat) ) - { - return false; - } - - // Overloaded Save method implemented in KMSAgentPKIKey.cpp - // this method saves keys to the temporary buffer, not a file, - // but a side effect is to get the actual file length - if ( !i_pPrivateKey->Save(aTempBuffer + iLength1, - MAX_KEY_SIZE, - &iLength2, /* returned - actual length - written */ - i_sPassphrase, - i_eFileFormat) ) - { - return false; - } - -#ifdef KMSUSERPKCS12 - } -#endif - - // now write the temporary buffer to a file - myFILE* pFile = fopen( i_pcFileName, "wb" ); - if ( pFile == NULL ) - { - return false; - } - -#ifdef KMSUSERPKCS12 -#ifdef K_SOLARIS_PLATFORM - int fd = fileno(pFile); - - /* Make sure this file is read/write for the OWNER only! */ - (void) fchmod(fd, 0600); -#endif -#endif - -#ifdef METAWARE - // write out the two file lengths - snprintf(aNotherTempBuffer, sizeof(aNotherTempBuffer), "iLength1=%x\n", iLength1); - fputs((const char*)aNotherTempBuffer, pFile); - - snprintf(aNotherTempBuffer, sizeof(aNotherTempBuffer), "iLength2=%x\n", iLength2); - fputs((const char*)aNotherTempBuffer, pFile); -#endif - - int iBytesWritten = fwrite( (const char*)aTempBuffer, // from - 1, // size - iLength1+iLength2, // actual file length - pFile ); // to-file - - fclose( pFile ); - - return ( iBytesWritten == (iLength1+iLength2) ); -} - - -CPKI::~CPKI() -{ - // empty -} - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h --- a/usr/src/lib/libkmsagent/common/KMSAgentPKICommon.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,293 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*-------------------------------------------------------------------------*/ -/** - * \file KMSAgentPKICommon.h - * - * X.509 Certificate and Private Key Support Interface - * - * This module provides simple interfaces to support SSL communication - * for the KMS Agent enrollment protocol. Basic classes supporting - * X.509 certificates, private key management are provided and hide - * specific implementations from users of these classes. - */ -/*-------------------------------------------------------------------------*/ - -#ifndef K_KMSAgentPKICommon_h -#define K_KMSAgentPKICommon_h - -#ifdef WIN32 -#pragma warning(disable: 4786) -#endif - -#define MAX_CERT_SIZE 4096 -#define MAX_KEY_SIZE 4096 - -#define DEFAULT_KEY_SIZE 2048 - -#ifdef KMSUSERPKCS12 -enum EnumPKIFileFormat { FILE_FORMAT_DER, FILE_FORMAT_PEM, FILE_FORMAT_PKCS12 }; -#else -enum EnumPKIFileFormat { FILE_FORMAT_DER, FILE_FORMAT_PEM }; -#endif - -/** - * This class provides a simple interface for the management of - * public keys. Simple load and store operations are provided for - * storage and retrieval from memory buffers. - */ -class CPublicKey -{ - -public: - - CPublicKey(); - - /** - * This method saves public key into a buffer, - * it also returns the actual used buffer length. - * @param i_pcBuffer Buffer to receive public key - * @param i_iBufferLength length of the buffer provided - * @param o_pActualLength actual length of the public key stored into the buffer - * @param i_iFormat key format, @see EnumPKIFileFormat - */ - bool Save(unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - int i_iFormat); - /** - * This method loads the public key from a buffer - * @param i_pcBuffer - * @param i_iLength - * @param i_iFormat one of the enums from EnumPKIFileFormat, - * only FILE_FORMAT_PEM is supported. - * @return true for success, false otherwise - */ - bool Load (unsigned char * const i_pcBuffer, - int i_iLength, - int i_iFormat); - - /** - * use this object's public key to encrypt plaintext buffer - */ - bool Encrypt (int i_iLength, - const unsigned char * const i_pcPlainText, - unsigned char * const o_pcCypherText, - int * const o_pActualLength); - - ~CPublicKey(); - -private: - void *m_pPublicKeyImpl; -}; - -/** - * This class provides a simple interface for the management of - * private keys. Simple load and store operations are provided for - * storage and retrieval from memory buffers. - * - */ -class CPrivateKey -{ - - public: - - CPrivateKey(); - - /** - * Saves the private key to a memory buffer specified by - * i_pcBuffer. Currently just the PEM format is supported. - * Specification of a passphrase allows encryption of the private - * key subject to the choice of the implementation. - * - * @param[in] i_pcBuffer - * @param[in] i_iBufferLength - * @param[out] o_pActualLength - * @param[in] i_pPassphrase optional, if non-null the private key is - * wrapped using this passphrase - * @param[in] i_iFormat one of the enums from EnumPKIFileFormat, - * only FILE_FORMAT_PEM is supported. - * @return true for success, false otherwise - */ - bool Save( unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - const char * const i_pPassphrase, - int i_iFormat ); - - /** - * This method loads the private key from a buffer - * @param i_pcBuffer - * @param i_iLength - * @param i_pPassphrase optional, if non-null the private key is - * unwrapped using this passphrase - * @param i_iFormat one of the enums from EnumPKIFileFormat, - * only FILE_FORMAT_PEM is supported. - * @return true for success, false otherwise - */ - bool Load(unsigned char * const i_pcBuffer, - int i_iLength, - const char * const i_pPassphrase, - int i_iFormat); - - ~CPrivateKey(); - -#ifdef KMSUSERPKCS12 - void *GetNative(); - void SetNative(void *); -#endif - private: - void *m_pPKeyImpl; - -}; - -/** - * This class provides a simple interface for managing X.509 - * certificates providing only simple load and save operations for - * storage and retrieval. - * - */ -class CCertificate -{ - -public: - CCertificate(); - - ~CCertificate(); - - /** - * save the certificate to the specified file name. Currently, - * only FILE_FORMAT_PEM is supported. - */ - bool Save( const char * const i_pcFileName, - int i_iFormat); - - /** - * save the certificate to the specified buffer. Currently, only - * FILE_FORMAT_PEM is supported. - */ - bool Save( unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - int i_iFormat); - - /** - * load a certificate from the specified filename. Currently, - * only FILE_FORMAT_PEM is supported. - */ - bool Load( const char * const i_pcFileName, - int i_iFormat ); - - /** - * load a certificate from the specified buffer. Currently, only - * FILE_FORMAT_PEM is supported. - */ - bool Load( unsigned char * const i_pcBuffer, - int i_iLength, - int i_iFormat ); - - /** - * prints the certificate to stdout - */ - bool Dump(); - -#ifdef KMSUSERPKCS12 - bool LoadPKCS12CertAndKey(char *filename, - int i_iFormat, - CPrivateKey *i_pPrivateKey, - char *i_pPassphrase); - - bool SavePKCS12( - unsigned char *i_pcBuffer, - int i_iBufferLength, - int *o_pActualLength, - CPrivateKey* i_pPrivateKey, - char* i_sPassphrase ); -#endif - -private: - /** - * an opague pointer to implementation specific resources to be - * freed by the Destructor. - */ - void *m_pCertImpl; -#ifdef KMSUSERPKCS12 - /** - * saves certificate to PKCS#12 memory BIO - * @param i_pPrivateKey - * @param i_sPassphrase - * @return pointer to the Memory BIO - */ - void* SaveCertToPKCS12MemoryBIO( - CPrivateKey* i_pPrivateKey, - char *i_sPassphrase); -#endif - -}; - - -/** - * This class provides a method for storing an X.509 certificate and - * private key to a file. The private key is appended to the - * certificate and optionally encrypted with the specified passphrase - * for encoding and storage in PEM format. - */ -class CPKI -{ - public: - CPKI(); - ~CPKI(); - - public: - - /** - * exports a certificate and associated private key to the - * specified file. - * @param i_pCertificate a pointer to an instance of a certificate - * @param i_pPrivateKey a pointer to an instance of a private key - * @param i_pcFileName the name of the file to store the cert and private key - * @param i_sPassphrase optional but when provided supplies a - * pass phrase to use for encrypting the private key. The cipher - * used for encryption is determined by the underlying implementation - * which for the reference implementation uses triple DES by default. - * @param i_eFileFormat the encoding format to use for the certificate and private key - */ - bool ExportCertAndKeyToFile( - CCertificate* const i_pCertificate, - CPrivateKey* const i_pPrivateKey, - const char* const i_pcFileName, - const char* const i_sPassphrase, - EnumPKIFileFormat i_eFileFormat ); - - private: - - int m_iKeyLength; - - CCertificate *m_pCACertificate; - CPrivateKey *m_pCAPrivateKey; - }; - -#endif //K_KMSAgentPKICommon_h diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentPKIKey.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentPKIKey.cpp - */ -#include - -#include "SYSCommon.h" -#include "KMSAgentPKICommon.h" -#include "KMSAgentPKIimpl.h" - -/////////////////////////////////////////////////////////////////////////////////////// -// public key methods -/////////////////////////////////////////////////////////////////////////////////////// -CPublicKey::CPublicKey() -{ - m_pPublicKeyImpl = InitializePKeyImpl(); - - FATAL_ASSERT( m_pPublicKeyImpl != NULL ); - -} - -/** - * This method saves public key into a buffer, - * it also returns the actual used buffer length. - * @param i_pcBuffer Buffer to receive public key - * @param i_iBufferLength length of the buffer provided - * @param o_pActualLength actual length of the public key stored into the buffer - * @param i_iFormat key format, @see EnumPKIFileFormat - */ -bool CPublicKey::Save( unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - int i_iFormat ) -{ - return SavePublicKeyToBuffer( m_pPublicKeyImpl, - i_pcBuffer, - i_iBufferLength, - o_pActualLength, - i_iFormat ); -} - -bool CPublicKey::Load(unsigned char * const i_pcBuffer, - int i_iLength, - int i_iFormat) -{ - return LoadPublicKeyFromBuffer( m_pPublicKeyImpl, - i_pcBuffer, - i_iLength, - i_iFormat ); -} - -bool CPublicKey::Encrypt (int i_iLength, - const unsigned char * const i_pcPlainText, - unsigned char * const o_pcCypherText, - int * const o_pActualLength) -{ - return PublicKeyEncrypt(i_iLength,i_pcPlainText,o_pcCypherText,o_pActualLength, m_pPublicKeyImpl ); -} - -CPublicKey::~CPublicKey() -{ - if(m_pPublicKeyImpl != NULL) - { - FinalizePKeyImpl( m_pPublicKeyImpl ); - } -} - -/////////////////////////////////////////////////////////////////////////////////////// -// private key methods -/////////////////////////////////////////////////////////////////////////////////////// - -CPrivateKey::CPrivateKey() -{ - m_pPKeyImpl = InitializePKeyImpl(); - - FATAL_ASSERT( m_pPKeyImpl != NULL ); - -} - -/** - * This method saves private key into a buffer, - * it also returns the actual used buffer length. - */ -bool CPrivateKey::Save( unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - const char * const i_pPassphrase, - int i_iFormat ) -{ - return SavePrivateKeyToBuffer(m_pPKeyImpl, - i_pcBuffer, - i_iBufferLength, - o_pActualLength, - i_pPassphrase, - i_iFormat ); -} - -bool CPrivateKey::Load(unsigned char * const i_pcBuffer, - int i_iLength, - const char * const i_pPassphrase, - int i_iFormat) -{ - return LoadPrivateKeyFromBuffer( m_pPKeyImpl, - i_pcBuffer, - i_iLength, - i_pPassphrase, - i_iFormat ); -} - -CPrivateKey::~CPrivateKey() -{ - if(m_pPKeyImpl != NULL) - { - FinalizePKeyImpl( m_pPKeyImpl ); - } -} -#ifdef KMSUSERPKCS12 -void -*CPrivateKey::GetNative() -{ - return GetPKey(m_pPKeyImpl); -} -void -CPrivateKey::SetNative(void *pKey) -{ - SetPKey(m_pPKeyImpl, pKey); - return; -} -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKIKeyOpenSSL.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentPKIKeyOpenSSL.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,412 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentPKIKeyOpenSSL.cpp - */ - -#include -#include -#include -#include - -#include "SYSCommon.h" -#include "KMSAgentPKIimpl.h" - -typedef struct PKeyControl -{ - EVP_PKEY* pPKey; -} PKeyControl; - -void * InitializePKeyImpl() -{ - PKeyControl *pPKeyControl = - (PKeyControl *) malloc(sizeof(PKeyControl)); - - if ( pPKeyControl != NULL ) - { - pPKeyControl->pPKey = NULL; - } - - return pPKeyControl; -} - -void FinalizePKeyImpl( void * i_pPKeyImpl ) -{ - if ( i_pPKeyImpl != NULL ) - { - free(i_pPKeyImpl); - } -} - -#ifdef KMSUSERPKCS12 -void *GetPKey(void *i_pPKeyImpl) { - PKeyControl* pPKeyControl = (PKeyControl*) i_pPKeyImpl; - return ((void *)pPKeyControl->pPKey); -} - -void SetPKey(void *i_pPKeyImpl, void *pKey) { - PKeyControl* pPKeyControl = (PKeyControl*) i_pPKeyImpl; - pPKeyControl->pPKey = (EVP_PKEY *)pKey; - return; -} -#endif - -/** - * export the private key to a memory BIO, if error, return NULL - */ -BIO* SavePrivateKeyToMemoryBIO(PKeyControl* const i_pPKeyControl, - const char * const i_pPassphrase) -{ - BIO *pMemBio = NULL; - const EVP_CIPHER *pCipher = NULL; - int iReturn; - - // set cipher, if passphrase is not empty - if(i_pPassphrase != NULL) - { - pCipher= EVP_des_ede3_cbc(); //NULL means no password protection - } - - // create memory BIO - pMemBio = BIO_new(BIO_s_mem()); - - if(pMemBio == NULL) - { - //fixme: log -- no memory - return NULL; - } - - iReturn = PEM_write_bio_PrivateKey - (pMemBio, - i_pPKeyControl->pPKey, - pCipher, - NULL,0,NULL, (char*) i_pPassphrase); - - if(!iReturn) // return 0: means error occurs - { - //fixme: log -- could not export private key - BIO_free(pMemBio); - return NULL; - } - - return pMemBio; -} - -bool SavePrivateKeyToBuffer( - void * const i_pPKeyImpl, - unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - const char * const i_pPassphrase, - int i_iFormat) -{ - PKeyControl* pPKeyControl = (PKeyControl*) i_pPKeyImpl; - - FATAL_ASSERT( pPKeyControl && - i_pcBuffer && - i_iBufferLength > 0 && - o_pActualLength ); - - BIO *pMemBio = NULL; - char *pData = NULL; - int iLength; - - // create memory BIO - pMemBio = SavePrivateKeyToMemoryBIO( pPKeyControl, i_pPassphrase ); - - if(pMemBio == NULL) - { - //fixme: log -- no memory - return false; - } - - iLength = BIO_get_mem_data(pMemBio, &pData); - - // If the output buffer is a string, it needs to be NULL terminated - // So always append a NULL to the output - if(iLength + 1 > i_iBufferLength) - { - //fixme: log -- buffer too small - BIO_free(pMemBio); - return false; - } - // copy the data to given buffer - memcpy(i_pcBuffer, pData, iLength); - // NULL terminate the string - i_pcBuffer[iLength] = '\0'; - *o_pActualLength = iLength; - - // free memory - BIO_free(pMemBio); - - return true; -} - -/** - * import the private key from a BIO, if error, return NULL - */ -bool LoadPrivateKeyFromBIO(PKeyControl* const io_pPKeyControl, - BIO *i_pBio, - char *i_pPassphrase ) -{ - if (io_pPKeyControl == NULL) - { - return false; - } - - EVP_PKEY *pKey = NULL; - - if(i_pBio == NULL) - { - return false; - } - - if ( io_pPKeyControl != NULL && io_pPKeyControl->pPKey != NULL ) - { - return false; // do not allow overwrite - } - - pKey=PEM_read_bio_PrivateKey(i_pBio,NULL,NULL,i_pPassphrase); - if (pKey == NULL) - { - // fixme: log: invalid private key format or passphrase - return false; - } - - io_pPKeyControl->pPKey = pKey; - - return true; -} - -bool LoadPrivateKeyFromBuffer( - void * const i_pPKeyImpl, - unsigned char * i_pcBuffer, - int i_iLength, - const char * const i_pPassphrase, - int i_iFormat) -{ - PKeyControl* const pPKeyControl = (PKeyControl*) i_pPKeyImpl; - - FATAL_ASSERT( i_pPKeyImpl && i_pcBuffer ); - - bool bReturn; - BIO *pMemBio; - // create a mem bio from the given buffer - // Note that BIO_new_mem_buf() creates a BIO which never - // destroy the memory attached to it. - pMemBio = BIO_new_mem_buf(i_pcBuffer, i_iLength); - if (pMemBio == NULL) - { - //fixme: log -- no memory - return false; - } - bReturn = LoadPrivateKeyFromBIO( pPKeyControl, - pMemBio, (char *)i_pPassphrase ); - - BIO_free(pMemBio); - - return bReturn; -} - -/** - * export the public key to a memory BIO, if error, return NULL - */ -BIO* SavePublicKeyToMemoryBIO(PKeyControl* const i_pPublicKeyControl ) -{ - BIO *pMemBio = NULL; - - int iReturn; - - // create memory BIO - pMemBio = BIO_new(BIO_s_mem()); - - if(pMemBio == NULL) - { - //fixme: log -- no memory - return NULL; - } - - iReturn = PEM_write_bio_PUBKEY(pMemBio, - i_pPublicKeyControl->pPKey ); - - if(!iReturn) // return 0: means error occurs - { - //fixme: log -- could not export private key - BIO_free(pMemBio); - return NULL; - } - - return pMemBio; -} - -bool SavePublicKeyToBuffer( - void * const i_pPKeyImpl, - unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - int i_iFormat) -{ - PKeyControl* pPublicKeyControl = (PKeyControl*) i_pPKeyImpl; - - FATAL_ASSERT( pPublicKeyControl && - i_pcBuffer && - i_iBufferLength > 0 && - o_pActualLength ); - - BIO *pMemBio = NULL; - char *pData = NULL; - int iLength; - - // create memory BIO - pMemBio = SavePublicKeyToMemoryBIO( pPublicKeyControl ); - - if(pMemBio == NULL) - { - return false; - } - - iLength = BIO_get_mem_data(pMemBio, &pData); - - // If the output buffer is a string, it needs to be NULL terminated - // So always append a NULL to the output - if(iLength + 1 > i_iBufferLength) - { - BIO_free(pMemBio); - return false; - } - // copy the data to given buffer - memcpy(i_pcBuffer, pData, iLength); - // NULL terminate the string - i_pcBuffer[iLength] = '\0'; - *o_pActualLength = iLength; - - // free memory - BIO_free(pMemBio); - - return true; -} - -/** - * import the public key from a BIO, if error, return NULL - */ -bool LoadPublicKeyFromBIO(PKeyControl* const io_pPublicKeyControl, - BIO *i_pBio ) -{ - EVP_PKEY *pKey = NULL; - - if(io_pPublicKeyControl == NULL) - { - return false; - } - - if(i_pBio == NULL) - { - return false; - } - - if ( io_pPublicKeyControl != NULL && io_pPublicKeyControl->pPKey != NULL ) - { - return false; // do not allow overwrite - } - - pKey = PEM_read_bio_PUBKEY(i_pBio, NULL, NULL, NULL); - if (pKey == NULL) - { - // fixme: log: invalid public key format or passphrase - return false; - } - - io_pPublicKeyControl->pPKey = pKey; - - return true; -} - -bool LoadPublicKeyFromBuffer( - void * const i_pPublicKeyImpl, - unsigned char * i_pcBuffer, - int i_iLength, - int i_iFormat) -{ - PKeyControl* const pPublicKeyControl = (PKeyControl*) i_pPublicKeyImpl; - - FATAL_ASSERT( i_pPublicKeyImpl && i_pcBuffer ); - - bool bReturn; - BIO *pMemBio; - // create a mem bio from the given buffer - // Note that BIO_new_mem_buf() creates a BIO which never - // destroy the memory attached to it. - pMemBio = BIO_new_mem_buf(i_pcBuffer, i_iLength); - if (pMemBio == NULL) - { - //fixme: log -- no memory - return false; - } - bReturn = LoadPublicKeyFromBIO( pPublicKeyControl, - pMemBio ); - - BIO_free(pMemBio); - - return bReturn; -} - -bool PublicKeyEncrypt (int i_iLength, - const unsigned char * const i_pcPlainText, - unsigned char * const o_pcCypherText, - int * const o_pActualLength, - void * pPKeyControl ) -{ - FATAL_ASSERT( i_pcPlainText ); - FATAL_ASSERT( o_pcCypherText ); - FATAL_ASSERT( o_pActualLength ); - FATAL_ASSERT( pPKeyControl ); - - PKeyControl *pKeyControl = (PKeyControl *)pPKeyControl; - EVP_PKEY * pEVP_PKEY = pKeyControl->pPKey; - RSA * pRSAPublicKey = pEVP_PKEY->pkey.rsa; - -//#if defined(DEBUG) -// RSA_print_fp(stdout, pRSAPublicKey, 0); -// printf("PublicKeyEncrypt(): RSA_size()=%d, cyphertextLen=%d\n", -// RSA_size(pRSAPublicKey), -// i_iLength); -//#endif - - *o_pActualLength = RSA_public_encrypt(i_iLength, - i_pcPlainText, - o_pcCypherText, - pRSAPublicKey, - RSA_PKCS1_PADDING); - - if ( *o_pActualLength < 0 ) - { - return false; - } - else - { - return true; - } -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h --- a/usr/src/lib/libkmsagent/common/KMSAgentPKIimpl.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentPKIimpl.h - */ - -#ifndef K_KMSAgentPKIimpl_h -#define K_KMSAgentPKIimpl_h - -/** - * initializes the implementation environment for an X509 - * certificate implementation and returns an opague handle to any - * resources that should be freed when use of the X.509 - * implementation is complete. This handle is used on all - * subsequent calls that may need to access this resource. - */ -void * InitializeCertImpl(); - -/** - * Save the X.509 Certificate in PEM format to the specified filename - */ -bool SaveX509CertTofile( - void* const i_pImplResource, - const char * const i_pcFileName ); - -/** - * Save the X.509Certificate in PEM format to the specified buffer - * and set the length of the certificate in the location referenced - * by o_pActualLength - */ -bool SaveX509CertToBuffer( - void* const i_pImplResource, - unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength ); - -/** - * loads the X.509 certificate from i_pcFileName and keeps a reference to it - * via i_pImplResource - */ -bool LoadX509CertFromFile( - void* const i_pImplResource, - const char * const i_pcFileName ); - -/** - * load the X.509 certificate from i_pX509Buffer and keeps a reference to it - * via i_pImplResource - */ -bool LoadX509CertFromBuffer( - void* const i_pImplResource, - void* const i_pX509Cert, - int i_iLength); - -/** - * frees any resources allocated by InitializeCertImpl - */ -void FinalizeCertImpl( - void* i_pImplResource); - -/** - * print the X.509 certificate to stdout - */ -bool PrintX509Cert( void* const i_pImplResource ); - -/** - * initializes the implementation environment for a public or private key - * and returns an opague handle to any resources that should be freed - * when use of the key is complete. This handle is used - * on all subsequent calls that may need to access this resource. - */ -void * InitializePKeyImpl(); - -/** - * frees any resources allocated by InitializePKeyImpl - */ -void FinalizePKeyImpl( void * i_pPKeyImpl ); - -#ifdef KMSUSERPKCS12 -void *GetPKey( void *i_pImplResource); -void SetPKey( void *i_pImplResource, void *i_pPKey); -void *GetCert( void *i_pImplResource); -void SetCert( void *i_pImplResource, void *cert); -#endif - -/** - * Stores the private key in a memory buffer referenced by - * i_pcBuffer with the length of the key being stored in the area - * referenced by o_pActualLength. - * - */ -bool SavePrivateKeyToBuffer( - void * const i_pPKeyImpl, - unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - const char * const i_pPassphrase, - int i_iFormat); - -/** - * load the private key into this object from the specified buffer - */ -bool LoadPrivateKeyFromBuffer( - void * const i_pPKeyImpl, - unsigned char * i_pcBuffer, - int i_iLength, - const char * const i_pPassphrase, - int i_iFormat); - -/** - * Stores the pubic key in a memory buffer referenced by - * i_pcBuffer with the length of the key being stored in the area - * referenced by o_pActualLength. - * - */ -bool SavePublicKeyToBuffer( - void * const i_pPKeyImpl, - unsigned char * const i_pcBuffer, - int i_iBufferLength, - int * const o_pActualLength, - int i_iFormat); - -/** - * load a public key into this object from the specified buffer - */ -bool LoadPublicKeyFromBuffer( - void * const i_pPKeyImpl, - unsigned char * i_pcBuffer, - int i_iLength, - int i_iFormat); - -/** - * encrypt the plaintext using RSA encryption with the RSA public - * key provided and return resulting cyphertext - */ -bool PublicKeyEncrypt (int i_iLength, - const unsigned char * const i_pcPlainText, - unsigned char * const o_pcCypherText, - int * const o_pActualLength, - void * i_pRSAPublicKey); - -#endif // K_KMSAgentPKIimpl_h - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include "KMSAgentSoapUtilities.h" -#include "KMSAgentStringUtilities.h" -#include "ApplianceParameters.h" - -#include "stdsoap2.h" - -/** - * Get the peer's network address - */ -void GetPeerNetworkAddress (char* const o_psPeerNetworkAddress, - struct soap* i_pSoap) -{ - FATAL_ASSERT(o_psPeerNetworkAddress); - - if (strlen(i_pSoap->host) > 0) - { - // IPv4 addresses can appear as ::ffff:a.b.c.d, strip off the prefix - if (strncmp(i_pSoap->host, "::ffff:", 7) == 0) - { - strncpy(o_psPeerNetworkAddress, &i_pSoap->host[7], g_iMAX_PEER_NETWORK_ADDRESS_LENGTH); - o_psPeerNetworkAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH-1] = '\0'; - return; - } - strncpy(o_psPeerNetworkAddress, i_pSoap->host, g_iMAX_PEER_NETWORK_ADDRESS_LENGTH); - o_psPeerNetworkAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH-1] = '\0'; - return; - } - - // i_pSoap->ip == 0 could not represent a valid - // Peer Network Address (IPv4), check i_pSoap->session_host - // for an IPv6 address - if (i_pSoap->ip == 0) - { -#ifndef METAWARE - if (strlen(i_pSoap->session_host) > 0) - { - // IPv4 addresses can appear as ::ffff:a.b.c.d, strip off the - // prefix - - if (strncmp(i_pSoap->session_host, "::ffff:", 7) == 0) - { - strncpy(o_psPeerNetworkAddress, &i_pSoap->session_host[7], g_iMAX_PEER_NETWORK_ADDRESS_LENGTH); - o_psPeerNetworkAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH-1] = '\0'; - return; - } - - strncpy(o_psPeerNetworkAddress, i_pSoap->session_host, g_iMAX_PEER_NETWORK_ADDRESS_LENGTH); - o_psPeerNetworkAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH-1] = '\0'; - return; - } -#endif - strcpy(o_psPeerNetworkAddress, ""); - return; - } - - K_snprintf(o_psPeerNetworkAddress, - g_iMAX_PEER_NETWORK_ADDRESS_LENGTH, - "%d.%d.%d.%d", - (int) (i_pSoap->ip >> 24)&0xFF, - (int) (i_pSoap->ip >> 16)&0xFF, - (int) (i_pSoap->ip >> 8)&0xFF, - (int) (i_pSoap->ip)&0xFF); - - return; -} - -/** - * Get the soap fault code and print it - */ -void GetSoapFault(char* o_psFaultMessage, - struct soap *i_pstSoap) -{ - FATAL_ASSERT( i_pstSoap ); - - strncpy (o_psFaultMessage, " SoapFaultCode=",g_iMAX_SOAP_FAULT_MESSAGE_LENGTH); - o_psFaultMessage[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH-1] = '\0'; - strncat (o_psFaultMessage, GET_SOAP_FAULTCODE(i_pstSoap), - g_iMAX_SOAP_FAULT_MESSAGE_LENGTH-strlen(o_psFaultMessage)); - strncat (o_psFaultMessage, " SoapFaultString=", - g_iMAX_SOAP_FAULT_MESSAGE_LENGTH-strlen(o_psFaultMessage)); - strncat (o_psFaultMessage, GET_SOAP_FAULTSTRING(i_pstSoap), - g_iMAX_SOAP_FAULT_MESSAGE_LENGTH-strlen(o_psFaultMessage)); - strncat (o_psFaultMessage, " SoapFaultDetail=", - g_iMAX_SOAP_FAULT_MESSAGE_LENGTH-strlen(o_psFaultMessage)); - strncat (o_psFaultMessage, GET_SOAP_FAULTDETAIL(i_pstSoap), - g_iMAX_SOAP_FAULT_MESSAGE_LENGTH-strlen(o_psFaultMessage)); - - return; -} - -bool PutBinaryIntoSoapBinary( - struct soap* i_pSoap, - const unsigned char* i_pBinary, - int i_iBinarySize, - unsigned char*& o_pSoapBinary, - int& o_iSoapBinarySize ) -{ - FATAL_ASSERT( i_pSoap ); - - o_pSoapBinary = 0; - o_iSoapBinarySize = 0; - - if ( i_iBinarySize > 0 ) - { - o_pSoapBinary = - (unsigned char*)soap_malloc( - i_pSoap, - sizeof(unsigned char) * i_iBinarySize); - - if ( !o_pSoapBinary ) - { - // No log for out of memory condition - - return false; - } - - o_iSoapBinarySize = i_iBinarySize; - - memcpy(o_pSoapBinary, i_pBinary, i_iBinarySize); - } - - return true; -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.h --- a/usr/src/lib/libkmsagent/common/KMSAgentSoapUtilities.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentSoapUtilities.h - */ - -#ifndef KMSAgentSoapUtilities_h -#define KMSAgentSoapUtilities_h - -/** - * maximum length of a network IP address - */ -static const int g_iMAX_PEER_NETWORK_ADDRESS_LENGTH = 50; - -/** - * maximum length of a soap fault message string - */ -static const int g_iMAX_SOAP_FAULT_MESSAGE_LENGTH = 256; - -//BEN CHANGE - removed predeclaration of struct soap -// need the real declaration -//struct soap; - -/** - * copies at most g_iMAX_PEER_NETWORK_ADDRESS_LENGTH characters - * from the peer's network address from the soap runtime context. - * o_psPeerNetworkAddress should be at least - * g_iMAX_PEER_NETWORK_ADDRESS_LENGTH in length. - */ -void GetPeerNetworkAddress( char* const o_psPeerNetworkAddress, - struct soap* i_pSoap ); - -/** - * creates a soap fault message and stores it in o_psFaultMessage. The fault message - * has the form: " SoapFaultCode=%s SoapFaultString=%s SoapFaultDetail=%s" with the - * appropriate values substitued for %s from the soap runtime. - * @param o_psFaultMessage a buffer for the fault message that is at least - * g_iMAX_SOAP_FAULT_MESSAGE_LENGTH in size. - * @param i_pstSoap the soap runtime context to process for fault information - */ -// BEN - removed const -void GetSoapFault(char* o_psFaultMessage, - struct soap *i_pstSoap); - -bool PutBinaryIntoSoapBinary( - struct soap* i_pSoap, - const unsigned char* i_pBinary, - int i_iBinarySize, - unsigned char*& o_pSoapBinary, - int& o_iSoapBinarySize ); - -#endif //KMSAgentSoapUtilities_h diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentStorage.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentStorage.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1575 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentStorage.cpp - * This file provides an implementation of the KMSAgentStorage.h - * interface utilizing a filesystem for storage of KMS Client - * Profile elements. - * - * For storage of Certificates and Private key material the PKICommon - * interface is used. - */ - -#include -#include - -#ifndef METAWARE -#include -#endif - -#ifdef K_SOLARIS_PLATFORM -#ifndef SOLARIS10 -#include -#endif -#include -#include -#endif - -#include "stdsoap2.h" - -#include "KMSClientProfile.h" // must be before agentstorage -#include "KMSAgentPKICommon.h" // must be before agentstorage -#include "KMSAgentStorage.h" - -#include "SYSCommon.h" -#include "AutoMutex.h" -#include "KMSAuditLogger.h" -#include "KMSClientProfileImpl.h" - -#include "KMSAgent_direct.h" -#ifdef K_SOLARIS_PLATFORM -#include "KMSAgent.h" -#endif -#include "k_setupssl.h" // K_ssl_client_context - -#ifdef METAWARE -extern "C" int K_ssl_client_context(struct soap *soap, - int flags, - const char *keyfile, // NULL - SERVER - const char *password, // NULL - SERVER - const char *cafile, - const char *capath, // ALWAYS NULL - const char *randfile); // ALWAYS NULL -#include "debug.h" -#endif - - -#define CA_CERTIFICATE_FILE "ca.crt" -#define CLIENT_KEY_FILE "clientkey.pem" - -#define PROFILE_CONFIG_FILE "profile.cfg" -#define PROFILE_CLUSTER_CONFIG_FILE "cluster.cfg" - -static char g_sWorkingDirectory[KMS_MAX_PATH_LENGTH+1]; -static char g_sStringbuf[10000]; // too large to be on the 9840D stack - -static void BuildFullProfilePathWithName(utf8cstr o_pProfilePath, - const char* const i_pWorkingDirectory, - const char* const i_pProfileName) -{ - int len; - FATAL_ASSERT( o_pProfilePath ); - FATAL_ASSERT( i_pWorkingDirectory ); - FATAL_ASSERT( i_pProfileName ); - FATAL_ASSERT( (strlen(i_pWorkingDirectory) > 0) ); - FATAL_ASSERT( (strlen(i_pProfileName) > 0) ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, BuildFullProfilePathWithName ); -#endif - - strncpy(o_pProfilePath, i_pWorkingDirectory, - KMS_MAX_FILE_NAME ); - - if ( o_pProfilePath[ strlen(o_pProfilePath) -1 ] != PATH_SEPARATOR ) - { - len = strlen(o_pProfilePath); - o_pProfilePath[ len ] = PATH_SEPARATOR ; - o_pProfilePath[ len + 1 ] = '\0'; - } - - strncat( o_pProfilePath, i_pProfileName, KMS_MAX_FILE_NAME ); - len = strlen(o_pProfilePath); - o_pProfilePath[ len ] = PATH_SEPARATOR ; - o_pProfilePath[ len +1 ] = '\0'; - - return; -} - -static void BuildFullProfilePath(utf8cstr o_sProfilePath, - const char* const i_pWorkingDirectory, - const char* const i_pProfileName) -{ - FATAL_ASSERT( o_sProfilePath ); - FATAL_ASSERT( i_pWorkingDirectory ); - FATAL_ASSERT( i_pProfileName ); - FATAL_ASSERT( (strlen(i_pProfileName) > 0) ); - - BuildFullProfilePathWithName( o_sProfilePath, - i_pWorkingDirectory, - i_pProfileName ); - - return; -} - -#ifdef K_SOLARIS_PLATFORM -static struct flock cfgfl = { - 0, 0, 0, 0, 0, 0, - {0, 0, 0, 0} -}; -static struct flock clusterfl = { - 0, 0, 0, 0, 0, 0, - {0, 0, 0, 0} -}; - -pthread_mutex_t cfg_mutex = PTHREAD_MUTEX_INITIALIZER; -pthread_mutex_t cluster_mutex = PTHREAD_MUTEX_INITIALIZER; -pthread_mutex_t keyfile_mutex = PTHREAD_MUTEX_INITIALIZER; - -static int -flock_fd(int fd, int cmd, struct flock *fl, pthread_mutex_t *mutex) -{ - int ret = 0; - - (void) pthread_mutex_lock(mutex); - - fl->l_type = cmd; - - while ((ret = fcntl(fd, F_SETLKW, fl)) == -1) { - if (errno != EINTR) - break; - } - (void) pthread_mutex_unlock(mutex); - return (ret); -} - -#endif - -static bool Profile_WriteConfigFile(KMSClientProfile *i_pProfile, - const char *i_pFileName) -{ - FATAL_ASSERT( i_pProfile ); - FATAL_ASSERT( i_pFileName ); - - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, Profile_WriteConfigFile ); -#endif - - char *sp = g_sStringbuf; - size_t bytesWritten = 0; - - // save config parameters - - myFILE *fp = fopen(i_pFileName, "w"); - if(fp == NULL) - { - LogError(i_pProfile, - AUDIT_PROFILE_WRITE_CONFIG_FILE_OPEN_CONFIGURATION_FILE_FAILED, - NULL, - NULL, - i_pFileName); - - return false; - } - -#ifdef K_SOLARIS_PLATFORM - int fd = fileno(fp); - (void) flock_fd(fd, F_WRLCK, &cfgfl, &cfg_mutex); -#endif - -const char* const sProfileName = i_pProfile->m_wsProfileName; - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "ProfileName=%s\n", sProfileName); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "AgentID=%s\n", i_pProfile->m_wsEntityID); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "ClusterDiscoveryFrequency=%d\n", - i_pProfile->m_iClusterDiscoveryFrequency); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "CAServicePortNumber=%d\n", - i_pProfile->m_iPortForCAService); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "CertificateServicePortNumber=%d\n", - i_pProfile->m_iPortForCertificateService); - - if(i_pProfile->m_iPortForAgentService != 0) - { - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "AgentServicePortNumber=%d\n", - i_pProfile->m_iPortForAgentService); - } - - if(i_pProfile->m_iPortForDiscoveryService != 0) - { - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "DiscoveryServicePortNumber=%d\n", - i_pProfile->m_iPortForDiscoveryService); - } - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "ApplianceAddress=%s\n", i_pProfile->m_wsApplianceAddress); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "Timeout=%d\n", i_pProfile->m_iTransactionTimeout); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "FailoverLimt=%d\n", i_pProfile->m_iFailoverLimit); - - sp += K_snprintf(sp, sizeof(i_pProfile->m_wsProfileName), "HexHashedPassphrase=%s\n", i_pProfile->m_sHexHashedPassphrase); - - bytesWritten = fputs(g_sStringbuf, fp); - -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &cfgfl, &cfg_mutex); -#endif - -#ifndef WIN32 - if ( strlen(g_sStringbuf) != bytesWritten ) -#else - if ( bytesWritten < 0 ) -#endif - { - fclose(fp); - return false; - } - fclose(fp); - - return true; -} - -static bool Profile_ReadConfigFile -( KMSClientProfile *i_pProfile, - const char *i_pFileName) -{ - FATAL_ASSERT( i_pProfile ); - FATAL_ASSERT( i_pFileName ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, Profile_ReadConfigFile ) ; -#endif - - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - - const int iMaxLineSize = 1024; - - myFILE *fp; - char acBuffer[iMaxLineSize+1]; - - fp = fopen(i_pFileName, "r"); - if(fp == NULL) - { - LogError(i_pProfile, - AUDIT_PROFILE_READ_CONFIG_FILE_OPEN_CONFIGURATION_FILE_FAILED, - NULL, - NULL, - i_pFileName); - return false; - } - -#ifdef K_SOLARIS_PLATFORM - int fd = fileno(fp); - (void) flock_fd(fd, F_RDLCK, &cfgfl, &cfg_mutex); -#endif - // read file one line by one line - while(1) - { - int i; - char *pName, *pValue; - - memset(acBuffer, 0, iMaxLineSize+1); - - //--------------------------- - // get info from the file - //--------------------------- - if(fgets(acBuffer, iMaxLineSize+1, fp) == NULL) - break; - - if(strlen(acBuffer) < 3) - continue; - - if(acBuffer[0] == '#' || - acBuffer[0] == ';' || - acBuffer[0] == '[') // jump comments - continue; - - pName = acBuffer; - pValue = NULL; - - for(i = 0; acBuffer[i] != '\0'; i++) - { - if(acBuffer[i] == '=') - pValue = acBuffer + i + 1; - - if(acBuffer[i] == '=' || - acBuffer[i] == '\r' || - acBuffer[i] == '\n') - acBuffer[i] = '\0'; - } - - if(pValue == NULL) - { - LogError(i_pProfile, - AUDIT_PROFILE_READ_CONFIG_FILE_INVALID_CONFIGURATION_FILE_FORMAT, - NULL, - NULL, - i_pFileName); -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &cfgfl, &cfg_mutex); -#endif - fclose(fp); - return false; - } - - if(strcmp(pName, "ProfileName") == 0) - { - utf8cstr wsValue = pValue; - strncpy(i_pProfile->m_wsProfileName, wsValue, KMS_MAX_ENTITY_ID); - i_pProfile->m_wsProfileName[KMS_MAX_ENTITY_ID] = 0; - } - - if(strcmp(pName, "AgentID") == 0) - { - utf8cstr wsValue = pValue; - strncpy(i_pProfile->m_wsEntityID, wsValue, KMS_MAX_ENTITY_ID); - i_pProfile->m_wsEntityID[KMS_MAX_ENTITY_ID] = 0; - } - - if(strcmp(pName, "ClusterDiscoveryFrequency") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iClusterDiscoveryFrequency)); - } - - if(strcmp(pName, "CAServicePortNumber") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iPortForCAService)); - } - - if(strcmp(pName, "CertificateServicePortNumber") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iPortForCertificateService)); - } - - if(strcmp(pName, "AgentServicePortNumber") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iPortForAgentService)); - } - - if(strcmp(pName, "DiscoveryServicePortNumber") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iPortForDiscoveryService)); - } - - if(strcmp(pName, "ApplianceAddress") == 0) - { - utf8cstr wsValue = pValue; - strncpy(i_pProfile->m_wsApplianceAddress, - wsValue, KMS_MAX_NETWORK_ADDRESS); - i_pProfile->m_wsApplianceAddress[KMS_MAX_NETWORK_ADDRESS] = 0; - } - - if(strcmp(pName, "Timeout") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iTransactionTimeout)); - } - - if(strcmp(pName, "FailoverLimt") == 0) - { - sscanf(pValue, "%d", &(i_pProfile->m_iFailoverLimit)); - } - - if(strcmp(pName, "HexHashedPassphrase") == 0) - { - sscanf(pValue, "%s", i_pProfile->m_sHexHashedPassphrase); - } - } - -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &cfgfl, &cfg_mutex); -#endif - fclose(fp); - - return true; -} - - - - - -/*! ProfileExists - * - */ -extern "C" bool ProfileExists( - const char* const i_pWorkingDirectory, - const char* const i_pProfileName) -{ - FATAL_ASSERT( i_pWorkingDirectory ); - FATAL_ASSERT( i_pProfileName ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, ProfileExists ); -#endif - - - // the profile is stored in the working folder - strncpy( g_sWorkingDirectory, - i_pWorkingDirectory, - KMS_MAX_PATH_LENGTH ); - - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - BuildFullProfilePath( sFullProfileDir, - i_pWorkingDirectory, - i_pProfileName ); - - char sConfigFile[KMS_MAX_FILE_NAME+1] = ""; - strncpy( sConfigFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sConfigFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sConfigFile, PROFILE_CONFIG_FILE, KMS_MAX_FILE_NAME ); - - // just try to open the file to test if it exists - - bool bProfileExists = false; - - myFILE* pfFile = fopen( sConfigFile, "rb" ); - - if ( pfFile != NULL ) - { - bProfileExists = true; - - fclose(pfFile); - } - - return bProfileExists; -} - - -/*! CreateProfile - * - */ -bool CreateProfile( - KMSClientProfile* const io_pProfile, - const char* const i_pWorkingDirectory, - const char* const i_pProfileName) -{ - FATAL_ASSERT( io_pProfile ); - FATAL_ASSERT( i_pWorkingDirectory ); - FATAL_ASSERT( i_pProfileName ); - FATAL_ASSERT( (strlen(i_pProfileName) > 0) ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, CreateProfile ); - -#endif - - bool bSuccess = false; - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)io_pProfile->m_pLock ); - - char sFullProfileDir[KMS_MAX_FILE_NAME]; - BuildFullProfilePath( sFullProfileDir, - i_pWorkingDirectory, - i_pProfileName ); - - bSuccess = ( K_CreateDirectory( sFullProfileDir ) == 0 ); - - if ( !bSuccess ) - { - Log(AUDIT_CLIENT_LOAD_PROFILE_CREATE_DIRECTORY_FAILED, - NULL, - NULL, - NULL ); - } - strncpy( g_sWorkingDirectory, i_pWorkingDirectory, KMS_MAX_PATH_LENGTH ); - - bSuccess = StoreConfig( io_pProfile ); - if ( !bSuccess ) - { - Log(AUDIT_CLIENT_LOAD_PROFILE_CREATE_PROFILE_CONFIG_FAILED, - NULL, - NULL, - NULL ); - } - else - { - Log(AUDIT_CLIENT_LOAD_PROFILE_CREATE_PROFILE_CONFIG_SUCCEEDED, - NULL, - NULL, - NULL ); - } - - return bSuccess; -} - - -/*! StoreConfig - * Store the configuration to persistent storage - */ -bool StoreConfig( - KMSClientProfile* const i_pProfile ) -{ - FATAL_ASSERT( i_pProfile ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, StoreConfig ) ; -#endif - - char sConfigFile[KMS_MAX_FILE_NAME]; - BuildFullProfilePath( sConfigFile, - g_sWorkingDirectory, i_pProfile->m_wsProfileName ); - - strncat( sConfigFile, PROFILE_CONFIG_FILE, KMS_MAX_FILE_NAME ); - - return Profile_WriteConfigFile(i_pProfile, sConfigFile ); -} - -/*! StoreCluster - * Store the cluster to persistent storage - */ -bool StoreCluster( - KMSClientProfile* const i_pProfile ) -{ - FATAL_ASSERT( i_pProfile ); - - myFILE *fp; - int sCount; - char *sp = g_sStringbuf; - - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - BuildFullProfilePath( sFullProfileDir, - g_sWorkingDirectory, i_pProfile->m_wsProfileName ); - - char sClusterFile[KMS_MAX_FILE_NAME+1] = ""; - strncpy( sClusterFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sClusterFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sClusterFile, PROFILE_CLUSTER_CONFIG_FILE, KMS_MAX_FILE_NAME ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, StoreCluster ); -#endif - - - fp = fopen(sClusterFile, "w"); - if (fp == NULL) - { - LogError(i_pProfile, - AUDIT_CLIENT_SAVE_CLUSTER_INFORMATION_OPEN_CLUSTER_FILE_FAILED, - NULL, - NULL, - sClusterFile ); - return false; - } - -#ifdef K_SOLARIS_PLATFORM - int fd = fileno(fp); - (void) flock_fd(fd, F_WRLCK, &clusterfl, &cluster_mutex); -#endif - - sp += K_snprintf(sp, sizeof(g_sStringbuf), "EntitySiteID=%s\n\n", i_pProfile->m_wsEntitySiteID); - - for (int i = 0; i < i_pProfile->m_iClusterNum; i++) - { - if ( i > 0 ) - { - sp += K_snprintf(sp, sizeof(g_sStringbuf), "\n"); - } - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf),"\n")) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - -#ifdef WIN32 - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "ApplianceID=%I64d\n", - i_pProfile->m_aCluster[i].m_lApplianceID)) < 0 ) - { fclose(fp); return false; } - sp += sCount; - -#else - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "ApplianceID=%lld\n", - i_pProfile->m_aCluster[i].m_lApplianceID)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; -#endif - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "Enabled=%d\n", - i_pProfile->m_aCluster[i].m_iEnabled)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "Responding=%d\n", - i_pProfile->m_aCluster[i].m_iResponding)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "Load=%lld\n", - i_pProfile->m_aCluster[i].m_lLoad)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "ApplianceAlias=%s\n", - i_pProfile->m_aCluster[i].m_wsApplianceAlias)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "ApplianceNetworkAddress=%s\n", - i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "ApplianceSiteID=%s\n", - i_pProfile->m_aCluster[i].m_wsApplianceSiteID)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "KMAVersion=%s\n", - i_pProfile->m_aCluster[i].m_sKMAVersion)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "KMALocked=%d\n", - i_pProfile->m_aCluster[i].m_iKMALocked)) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - - if (( sCount = K_snprintf(sp, sizeof(g_sStringbuf), "\n")) < 0 ) - { -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - return false; } - sp += sCount; - } - - fputs(g_sStringbuf, fp); -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - Log(AUDIT_CLIENT_SAVE_CLUSTER_INFORMATION_SUCCEEDED, - NULL, - NULL, - NULL ); - - return true; -} - -/*! GetConfig - * get the configuration file from persistent storage - */ -bool GetConfig( - KMSClientProfile* const io_pProfile ) -{ - FATAL_ASSERT( io_pProfile ); - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - - BuildFullProfilePath( sFullProfileDir, - g_sWorkingDirectory, - io_pProfile->m_wsProfileName ); - - char sConfigFile[KMS_MAX_FILE_NAME+1]; - - strncpy( sConfigFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sConfigFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sConfigFile, PROFILE_CONFIG_FILE, KMS_MAX_FILE_NAME ); - - return Profile_ReadConfigFile( io_pProfile, sConfigFile ); -} - -/** GetCluster - * get the cluster information from persistent storage - */ -bool GetCluster( - KMSClientProfile* const io_pProfile, - int& o_bClusterInformationFound ) - -{ - FATAL_ASSERT( io_pProfile ); - - const int iMaxLineSize = 1024; - - myFILE *fp; - char acBuffer[iMaxLineSize+1]; - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - - BuildFullProfilePath( sFullProfileDir, - g_sWorkingDirectory, - io_pProfile->m_wsProfileName ); - - char sClusterFile[KMS_MAX_FILE_NAME+1]; - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, GetCluster ); -#endif - - strncpy( sClusterFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sClusterFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sClusterFile, PROFILE_CLUSTER_CONFIG_FILE, KMS_MAX_FILE_NAME ); - - fp = fopen( sClusterFile, "r" ); - - if ( fp == NULL ) - { -#ifdef METAWARE - // Assume file doesn't exist. This isn't an error (no support for - // errno in metaware). - o_bClusterInformationFound = 0; - return true; -#else - if ( errno == ENOENT ) - { - // File doesn't exist. This isn't an error. - o_bClusterInformationFound = 0; - return true; - } - - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_CLUSTER_INFORMATION_OPEN_CLUSTER_FILE_FAILED, - NULL, - NULL, - sClusterFile ); - return false; -#endif - } - -#ifdef K_SOLARIS_PLATFORM - int fd = fileno(fp); - (void) flock_fd(fd, F_WRLCK, &clusterfl, &cluster_mutex); -#endif - - o_bClusterInformationFound = 1; - int i; - // KMAVersion is new to Cluster config with 2.1 KMS and will not exist - // in persisted cluster configs from earlier agents - for ( i = 0; i < KMS_MAX_CLUSTER_NUM; i++ ) - { - io_pProfile->m_aCluster[i].m_sKMAVersion[0] = '\0'; - } - - int iClusterNum = 0; - // read file one line by one line - while(1) - { - int i; - char *pName, *pValue; - - memset(acBuffer, 0, iMaxLineSize+1); - - // get info from the file - if(fgets(acBuffer, iMaxLineSize+1, fp) == NULL) - break; - - if(strlen(acBuffer) < 3) - continue; - - if(acBuffer[0] == '#' || - acBuffer[0] == ';' || - acBuffer[0] == '[') // jump comments - continue; - - pName = acBuffer; pValue = NULL; - for(i = 0; acBuffer[i] != '\0'; i++) - { - if(acBuffer[i] == '=') - pValue = acBuffer + i + 1; - - if(acBuffer[i] == '=' || - acBuffer[i] == '\r' || - acBuffer[i] == '\n') - acBuffer[i] = '\0'; - } - - if(strcmp(pName, "") == 0) - { - continue; - } - if(strcmp(pName, "") == 0) - { - iClusterNum++; - } - - if(pValue == NULL) - { - if(strcmp(pName,"") == 0) - continue; - - if(strcmp(pName,"") == 0) - continue; - -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_CLUSTER_INFORMATION_INVALID_CLUSTER_FILE_FORMAT, - NULL, - NULL, - sClusterFile ); - return false; - } - - if(strcmp(pName, "EntitySiteID") == 0) - { - utf8cstr wsValue = pValue; - strncpy(io_pProfile->m_wsEntitySiteID, wsValue, KMS_MAX_ENTITY_SITE_ID); - io_pProfile->m_wsEntitySiteID[KMS_MAX_ENTITY_SITE_ID] = 0; - } - - - if(strcmp(pName, "ApplianceID") == 0) - { -#ifdef WIN32 - sscanf(pValue, "%lld", - &(io_pProfile->m_aCluster[iClusterNum].m_lApplianceID)); -#else - sscanf(pValue, "%lld", - &(io_pProfile->m_aCluster[iClusterNum].m_lApplianceID)); -#endif - } - if(strcmp(pName, "Enabled") == 0) - { - sscanf(pValue, "%d", - &(io_pProfile->m_aCluster[iClusterNum].m_iEnabled)); - } - - // assume it is responding by default - io_pProfile->m_aCluster[iClusterNum]. - m_iResponding = TRUE; - - if(strcmp(pName, "Load") == 0) - { - sscanf(pValue, "%lld", - &(io_pProfile->m_aCluster[iClusterNum].m_lLoad)); - } - if(strcmp(pName, "ApplianceAlias") == 0) - { - utf8cstr wsValue = pValue; - strncpy(io_pProfile->m_aCluster[iClusterNum].m_wsApplianceAlias, - wsValue, - KMS_MAX_ENTITY_ID); - io_pProfile->m_aCluster[iClusterNum]. - m_wsApplianceAlias[KMS_MAX_ENTITY_ID] = 0; - - } - if(strcmp(pName, "ApplianceNetworkAddress") == 0) - { - utf8cstr wsValue = pValue; - strncpy(io_pProfile->m_aCluster[iClusterNum]. - m_wsApplianceNetworkAddress, - wsValue, - KMS_MAX_NETWORK_ADDRESS); - io_pProfile->m_aCluster[iClusterNum]. - m_wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS] = 0; - } - if(strcmp(pName, "ApplianceSiteID") == 0) - { - utf8cstr wsValue = pValue; - strncpy(io_pProfile->m_aCluster[iClusterNum].m_wsApplianceSiteID, - wsValue, - KMS_MAX_ENTITY_SITE_ID); - io_pProfile->m_aCluster[iClusterNum]. - m_wsApplianceSiteID[KMS_MAX_ENTITY_SITE_ID] = 0; - } - if(strcmp(pName, "KMAVersion") == 0) - { - utf8cstr wsValue = pValue; - strncpy(io_pProfile->m_aCluster[iClusterNum].m_sKMAVersion, - wsValue, - KMS_MAX_VERSION_LENGTH); - io_pProfile->m_aCluster[iClusterNum]. - m_sKMAVersion[KMS_MAX_VERSION_LENGTH] = '\0'; - } - if(strcmp(pName, "KMALocked") == 0) - { - sscanf(pValue, "%d", - &(io_pProfile->m_aCluster[iClusterNum].m_iKMALocked)); - } - } - io_pProfile->m_iClusterNum = iClusterNum; - -#ifdef K_SOLARIS_PLATFORM - (void) flock_fd(fd, F_UNLCK, &clusterfl, &cluster_mutex); -#endif - fclose(fp); - - return true; -} - -/*! DeleteCluster - * - */ -bool DeleteCluster( KMSClientProfile* const io_pProfile ) -{ - FATAL_ASSERT( io_pProfile ); - FATAL_ASSERT( io_pProfile->m_wsProfileName ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, DeleteCluster ); -#endif - - bool bSuccess = true; - char sFullProfileDir[KMS_MAX_FILE_NAME]; - char sClusterInformationFile[KMS_MAX_FILE_NAME]; - - BuildFullProfilePathWithName( sFullProfileDir, g_sWorkingDirectory, - io_pProfile->m_wsProfileName ); - - strcpy( sClusterInformationFile, sFullProfileDir ); - strncat( sClusterInformationFile, PROFILE_CLUSTER_CONFIG_FILE, - KMS_MAX_FILE_NAME ); - - myFILE* pfFile = fopen( sClusterInformationFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - if ( my_unlink(sClusterInformationFile) ) - bSuccess = false; - } - - return true; -} - -/*! StoreCACertificate - * Store CA Certificate to a persistent storage file - * @param i_pProfile - * @param i_pCACertificate - * - * @returns boolean success or failure - */ -bool StoreCACertificate( - KMSClientProfile* const i_pProfile, - CCertificate* const i_pCACertificate ) -{ - FATAL_ASSERT( i_pProfile ); - FATAL_ASSERT( i_pCACertificate ); - - char sCACertificateFile[KMS_MAX_FILE_NAME]; - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, StoreCACertificate ); -#endif - - BuildFullProfilePath( sCACertificateFile, - g_sWorkingDirectory, - i_pProfile->m_wsProfileName ); - - strncat( sCACertificateFile, CA_CERTIFICATE_FILE, KMS_MAX_FILE_NAME ); - - // OVERLOADED Save method - 2 parameters means save to a file - if ( !( i_pCACertificate->Save(sCACertificateFile, PKI_FORMAT)) ) - { - LogError(i_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_SAVE_CA_CERTIFICATE_FAILED, - NULL, - NULL, - sCACertificateFile ); - return false; - } - return true; - -} - -/*! StoreAgentPKI - * Store Private Keys a persistent storage file - * - */ -#ifndef K_SOLARIS_PLATFORM -static -#endif -bool StoreAgentPKI( - KMSClientProfile* const i_pProfile, - CCertificate* const i_pAgentCertificate, - CPrivateKey* const i_pAgentPrivateKey, - const char* const i_sHexHashedPassphrase ) -{ - FATAL_ASSERT( i_pProfile ); - FATAL_ASSERT( i_pAgentCertificate ); - - bool bSuccess; - char sClientKeyFile[KMS_MAX_FILE_NAME]; - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, StoreAgentPKI ) ; -#endif - - BuildFullProfilePath( sClientKeyFile, - g_sWorkingDirectory, - i_pProfile->m_wsProfileName ); - - strncat( sClientKeyFile, -#ifdef KMSUSERPKCS12 - CLIENT_PK12_FILE, -#else - CLIENT_KEY_FILE, -#endif - KMS_MAX_FILE_NAME ); - - CPKI oPKI; - - // save Certificate and Private Key to file named sClientKeyFile(CLIENT_KEY_FILE) - bSuccess = oPKI.ExportCertAndKeyToFile( - i_pAgentCertificate, - i_pAgentPrivateKey, - sClientKeyFile, - i_sHexHashedPassphrase, -#ifdef KMSUSERPKCS12 - PKCS12_FORMAT -#else - PKI_FORMAT -#endif - ); - - if ( !bSuccess ) - { - LogError(i_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_EXPORT_CERTIFICATE_AND_KEY_FAILED, - NULL, - NULL, - sClientKeyFile ); - } - return bSuccess; -} - -/*! StorePKIcerts - * Store PKI objects to persistent storage files - */ -bool StorePKIcerts( - KMSClientProfile* const io_pProfile, - CCertificate* const i_pCACertificate, - CCertificate* const i_pAgentCertificate, - CPrivateKey* const i_pAgentPrivateKey, - const char* const i_sHexHashedPassphrase ) -{ - FATAL_ASSERT( io_pProfile ); - FATAL_ASSERT( i_pAgentCertificate ); - - bool bSuccess = false; - - bSuccess = StoreCACertificate( io_pProfile, i_pCACertificate ); - - if ( bSuccess ) - { - bSuccess = StoreAgentPKI( io_pProfile, - i_pAgentCertificate, - i_pAgentPrivateKey, - i_sHexHashedPassphrase ); - } - - if ( bSuccess ) - { - io_pProfile->m_iEnrolled = TRUE; - } - - return bSuccess; -} - -#ifdef KMSUSERPKCS12 - -/* - * Test to see if the PKCS12 file exists. - */ -bool ClientKeyP12Exists(char *profileName) -{ - bool bSuccess = true; - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - char sAgentPK12File[KMS_MAX_FILE_NAME+1]; - struct stat statp; - - BuildFullProfilePath(sFullProfileDir, - g_sWorkingDirectory, profileName); - - strncpy( sAgentPK12File, sFullProfileDir, KMS_MAX_FILE_NAME ); - strncat( sAgentPK12File, CLIENT_PK12_FILE, KMS_MAX_FILE_NAME ); - - bSuccess = false; - if (stat(sAgentPK12File, &statp) == -1) - bSuccess = false; - else if (statp.st_size > 0) - bSuccess = true; - - return (bSuccess); -} - -/* - * Load the cert and the private key from the PKCS12 file. - */ -bool GetPKCS12CertAndKey( - KMSClientProfile* const io_pProfile, - utf8char *i_pPassphrase, - CCertificate *i_pEntityCert, - CPrivateKey *i_pEntityPrivateKey) -{ - bool bSuccess = true; - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - char sAgentPK12File[KMS_MAX_FILE_NAME+1]; - - BuildFullProfilePath(sFullProfileDir, - g_sWorkingDirectory, io_pProfile->m_wsProfileName ); - - strncpy( sAgentPK12File, sFullProfileDir, KMS_MAX_FILE_NAME ); - strncat( sAgentPK12File, CLIENT_PK12_FILE, KMS_MAX_FILE_NAME ); - - bSuccess = i_pEntityCert->LoadPKCS12CertAndKey( - sAgentPK12File, FILE_FORMAT_PKCS12, - i_pEntityPrivateKey, i_pPassphrase); - - if (!bSuccess) - io_pProfile->m_iLastErrorCode = KMS_AGENT_LOCAL_AUTH_FAILURE; - - return (bSuccess); -} - -bool StoreTempAgentPKI( - KMSClientProfile* const i_pProfile, - CCertificate* i_pAgentCertificate, - CPrivateKey* i_pAgentPrivateKey) -{ - FATAL_ASSERT( i_pProfile ); - FATAL_ASSERT( i_pAgentCertificate ); - - bool bSuccess; - char sClientKeyFile[KMS_MAX_FILE_NAME]; - - BuildFullProfilePath( sClientKeyFile, - g_sWorkingDirectory, - i_pProfile->m_wsProfileName ); - - strncat(sClientKeyFile, - CLIENT_KEY_FILE, - KMS_MAX_FILE_NAME ); - - CPKI oPKI; - - // save Certificate and Private Key to file named sClientKeyFile(CLIENT_KEY_FILE) - bSuccess = oPKI.ExportCertAndKeyToFile( - i_pAgentCertificate, - i_pAgentPrivateKey, - sClientKeyFile, - NULL, - PKI_FORMAT); - - if ( !bSuccess ) - { - LogError(i_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_EXPORT_CERTIFICATE_AND_KEY_FAILED, - NULL, - NULL, - sClientKeyFile ); - } - return bSuccess; -} - -void CleanupPrivateKeyFile(KMSClientProfile* const io_pProfile) -{ - char sClientKeyFile[KMS_MAX_FILE_NAME]; - - BuildFullProfilePath( sClientKeyFile, - g_sWorkingDirectory, - io_pProfile->m_wsProfileName ); - - strncat(sClientKeyFile, - CLIENT_KEY_FILE, - KMS_MAX_FILE_NAME ); - - (void) unlink(sClientKeyFile); - return; -} -#endif /* PKCS12 */ - -/** - * GetPKIcerts verifies that CA and Agent certificates are available in - * persistent storage and updates profile with an indicator - */ -bool GetPKIcerts( - KMSClientProfile* const io_pProfile ) -{ - FATAL_ASSERT( io_pProfile ); - - bool bSuccess = true; - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - char sCAcertFile[KMS_MAX_FILE_NAME+1]; - char sAgentCertFile[KMS_MAX_FILE_NAME+1]; -#ifndef K_SOLARIS_PLATFORM - myFILE* pfFile; -#endif - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, GetPKIcerts ); -#endif - - io_pProfile->m_iEnrolled = FALSE; - - BuildFullProfilePath( sFullProfileDir, - g_sWorkingDirectory, io_pProfile->m_wsProfileName ); - - strncpy( sCAcertFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sCAcertFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sCAcertFile, CA_CERTIFICATE_FILE, KMS_MAX_FILE_NAME ); - -#ifdef K_SOLARIS_PLATFORM - /* - * stat(2) is preferred over fopen(3C) - * fopen for checking if a file is present. - */ - struct stat statp; - if (stat(sCAcertFile, &statp)) { - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_FAILED, - NULL, - NULL, - "Test for presence of CA Certificate failed" ); - return false; - } - -#else - pfFile = fopen( sCAcertFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - } - else - { - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_FAILED, - NULL, - NULL, - "Test for presence of CA Certificate failed" ); - return false; - } -#endif - - // open the file containing client certificate and private key - // checking if the file exists. - strncpy( sAgentCertFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sAgentCertFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sAgentCertFile, CLIENT_KEY_FILE, KMS_MAX_FILE_NAME ); - -#ifdef K_SOLARIS_PLATFORM - /* - * stat(2) is safer than "fopen" for checking if a file is - * present or not. - */ - if (stat(sAgentCertFile, &statp)) { - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_FAILED, - NULL, - NULL, - "Test for presence of Agent Certificate failed" ); - return false; - } -#else - - pfFile = fopen( sAgentCertFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - } - else - { - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_FAILED, - NULL, - NULL, - "Test for presence of Agent Certificate failed" ); - return false; - } -#endif - - io_pProfile->m_iEnrolled = TRUE; - - return bSuccess; -} - -/** - * DeleteStorageProfile - */ -bool DeleteStorageProfile( - const char* const i_pName) -{ - FATAL_ASSERT( i_pName ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, DeleteStorageProfile ); -#endif - - bool bSuccess = true; - char sFullProfileDir[KMS_MAX_FILE_NAME+1]; - char sConfigFile[KMS_MAX_FILE_NAME+1]; - char sClusterInformationFile[KMS_MAX_FILE_NAME+1]; - char sCACertificateFile[KMS_MAX_FILE_NAME+1]; - char sClientKeyFile[KMS_MAX_FILE_NAME+1]; -#ifdef KMSUSERPKCS12 - char sClientP12File[KMS_MAX_FILE_NAME+1]; -#endif - - BuildFullProfilePathWithName( sFullProfileDir, - g_sWorkingDirectory, i_pName ); - strncpy( sConfigFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sConfigFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sConfigFile, PROFILE_CONFIG_FILE, KMS_MAX_FILE_NAME ); - - strncpy( sClusterInformationFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sClusterInformationFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sClusterInformationFile, - PROFILE_CLUSTER_CONFIG_FILE, - KMS_MAX_FILE_NAME ); - - strncpy( sCACertificateFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sCACertificateFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sCACertificateFile, CA_CERTIFICATE_FILE, KMS_MAX_FILE_NAME ); - - strncpy( sClientKeyFile, sFullProfileDir, KMS_MAX_FILE_NAME ); - sClientKeyFile[KMS_MAX_FILE_NAME] = '\0'; - strncat( sClientKeyFile, CLIENT_KEY_FILE, KMS_MAX_FILE_NAME ); - - myFILE* pfFile = fopen( sConfigFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - if ( my_unlink(sConfigFile) ) - bSuccess = false; - } - - pfFile = fopen( sClusterInformationFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - if ( my_unlink(sClusterInformationFile) ) - bSuccess = false; - } - - pfFile = fopen( sCACertificateFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - if ( my_unlink(sCACertificateFile) ) - bSuccess = false; - } - - pfFile = fopen( sClientKeyFile, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - if ( my_unlink(sClientKeyFile) ) - bSuccess = false; - } - -#ifdef KMSUSERPKCS12 - strncpy( sClientP12File, sFullProfileDir, KMS_MAX_FILE_NAME ); - sClientP12File[KMS_MAX_FILE_NAME] = '\0'; - strncat( sClientP12File, CLIENT_KEY_FILE, KMS_MAX_FILE_NAME ); - - /* Just unlink, no need to open/close first. */ - if ( my_unlink(sClientP12File) ) - bSuccess = false; -#endif - - pfFile = fopen( sFullProfileDir, "rb" ); - - if ( pfFile != NULL ) - { - fclose(pfFile); - if ( my_rmdir(sFullProfileDir) ) - bSuccess = false; - } - - return bSuccess; -} - - - - -/** - * K_soap_ssl_client_context - * Parse client context and send to soap, either using a soap call - * for openSSL or user implemented call for Treck SSL - * - * @param i_pProfile - pointer to KMSClientProfile - * @param io_pSoap - pointer to soap structure - * @param i_iFlags - input flags (CLIENT or SERVER auth) - * - * @returns 0=success, non-zero=fail - */ -int K_soap_ssl_client_context -( KMSClientProfile* const i_pProfile, // input KMSClientProfile - struct soap * io_pSoap, // i/o soap profile - unsigned short i_iFlags ) // input flags -{ - FATAL_ASSERT( i_pProfile ); - FATAL_ASSERT( io_pSoap ); - -#if defined(DEBUG_TRACE) && defined(METAWARE) - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, K_soap_ssl_client_context ) ; -#endif - - - char sCACertificateFile[KMS_MAX_FILE_NAME]; - char sClientKeyFile[KMS_MAX_FILE_NAME]; - - - BuildFullProfilePath( sCACertificateFile, // out - g_sWorkingDirectory, // out - i_pProfile->m_wsProfileName ); // in - - strncat( sCACertificateFile, // path - CA_CERTIFICATE_FILE, // name - KMS_MAX_FILE_NAME ); - - - switch ( i_iFlags ) - { - case SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION: - { - BuildFullProfilePath( sClientKeyFile, - g_sWorkingDirectory, - i_pProfile->m_wsProfileName ); - - strncat( sClientKeyFile, // path - CLIENT_KEY_FILE, // name - KMS_MAX_FILE_NAME ); - - // this sends the following to the SSL Layer -#ifdef METAWARE - return K_ssl_client_context( - io_pSoap, // i/o - i_iFlags, // flags - sClientKeyFile, // keyfile - client cert and private key - i_pProfile->m_sHexHashedPassphrase, // password - sCACertificateFile, // cafile - CA certificate - NULL, // capath - NULL ); // randfile -#else - return soap_ssl_client_context( - io_pSoap, // i/o -#ifndef SOAP_SSL_SKIP_HOST_CHECK - i_iFlags, // flags -#else - i_iFlags | SOAP_SSL_SKIP_HOST_CHECK, // flags -#endif - sClientKeyFile, // keyfile - client cert and private key - i_pProfile->m_sHexHashedPassphrase, // password - sCACertificateFile, // cafile - CA certificate - NULL, // capath - NULL ); // randfile -#endif - } - case SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION: - { -#ifdef METAWARE - return K_ssl_client_context( - io_pSoap, // i/o - i_iFlags, // flags - NULL, // keyfile - NULL, // password - sCACertificateFile, // cafile - NULL, // capath - NULL ); // randfile -#else - return soap_ssl_client_context( - io_pSoap, // i/o -#ifndef SOAP_SSL_SKIP_HOST_CHECK - i_iFlags, // flags -#else - i_iFlags | SOAP_SSL_SKIP_HOST_CHECK, // flags -#endif - NULL, // keyfile - NULL, // password - sCACertificateFile, // cafile - NULL, // capath - NULL ); // randfile -#endif - } - default: - // unauthenticated sessions are not supported - return 1; - } -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentStorage.h --- a/usr/src/lib/libkmsagent/common/KMSAgentStorage.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAgentStorage.h - * - * This header provides an interface for the agent library to persist profile information, including - *
      - *
    • Profile Configuration properties - *
    • Profile KMS Cluster information - *
    • PKI Certificates and Agent Private Key - *
    - * With the storage management of PKI elements is an interface for initialization of the gSoap SSL - * client context. - *

    - * The reference implementation of this interface maps these storage elements into files. - * Other implmentations may need to persist these elements into other types of non-volatile - * storage. - */ - -#ifndef KMSAGENT_STORAGE_H -#define KMSAGENT_STORAGE_H - -/** - * checks if a profile exists in the working directory with the name specified in the io_pProfile struct - */ -extern "C" bool ProfileExists( - const char* const i_pWorkingDirectory, - const char* const i_pProfileName); - -/** - * creates a Storage object in the working directory with the specified name. - * The storage object's contents are empty. - */ -bool CreateProfile( - KMSClientProfile* const io_pProfile, - const char* const i_pWorkingDirectory, - const char* const i_pProfileName); - -/** - * saves the Config portion of the profile into persistent storage - */ -bool StoreConfig( - KMSClientProfile* const i_pProfile ); - -/** - * saves the Cluster information from the profile into persistent storage - */ -bool StoreCluster( - KMSClientProfile* const i_pProfile ); - -/** - * retrieve the Config information from persistent storage into the profile - */ -bool GetConfig( - KMSClientProfile* const io_pProfile ); - - -/** - * populate cluster array with names from storage. If the profile does - * does not contain cluster information then sets o_bClusterInformationFound - * to true. - */ -bool GetCluster( - KMSClientProfile* const io_pProfile, - int& o_bClusterInformationFound ); - -/** - * delete the cluster information from persistent storage - */ -bool DeleteCluster( KMSClientProfile* const io_pProfile ); - -/** - * saves the CA certificate into persistent storage - */ -bool StoreCACertificate( - KMSClientProfile* const i_pProfile, - CCertificate* const i_pCACertificate ); - - -/** - * save the CA certificate, agent certificate and agent - * private key material to persistent storage - * @param i_sHexHashedPassphrase this is an optional passphrase - * that is required when the caller wishes the private key to be - * encrypted. The private key will then be encrypted using this - * pass phrase. - */ -bool StorePKIcerts( - KMSClientProfile* const io_pProfile, - CCertificate* const i_pCACertificate, - CCertificate* const i_pAgentCertificate, - CPrivateKey* const i_pAgentPrivateKey, - const char* const i_sHexHashedPassphrase ); - -/** - * retrieve the CA certificate, agent certificate and agent - * private key material from persistent storage and reference - * from the profile - */ -bool GetPKIcerts( - KMSClientProfile* const io_pProfile ); - -#ifdef KMSUSERPKCS12 -bool StoreAgentPKI( - KMSClientProfile* const i_pProfile, - CCertificate* const i_pAgentCertificate, - CPrivateKey* const i_pAgentPrivateKey, - const char* const i_sHexHashedPassphrase); - -bool GetPKCS12CertAndKey( - KMSClientProfile* const io_pProfile, - utf8char *i_pPassphrase, - CCertificate *i_pEntityCert, - CPrivateKey *i_pEntityPrivateKey); - -bool StoreTempAgentPKI( - KMSClientProfile* const io_pProfile, - CCertificate *i_pEntityCert, - CPrivateKey *i_pEntityPrivateKey); - -bool ClientKeyP12Exists(char *profileName); - -void CleanupPrivateKeyFile(KMSClientProfile* const io_pProfile); -#endif - -/** - * Provides a wrapper to gSoap's soap_ssl_client_context() - * that hides how Certificates and Private key material are presented to the underlying SSL - * layer. - * @param i_pProfile The profile must contain a reference to the CA certificate and for - * SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION the Agent's certificate and private key material. - * @param io_pSoap gSoap runtime - * @param i_iFlags These are the gSoap authentication flags, either - * SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION or SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION. - * The private key password argument is only applicable - * for SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION. - * - * @return value from gSoap's soap_ssl_client_context() - */ -int K_soap_ssl_client_context( - KMSClientProfile* const i_pProfile, - struct soap * io_pSoap, - unsigned short i_iFlags ); - -/** - * deletes the persistent storage object specified by name and its contents - */ -bool DeleteStorageProfile( - const char* const i_pName); - -#endif // KMSAGENT_STORAGE_H - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.cpp --- a/usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef WIN32 -#include - - #ifndef METAWARE - #include - #endif - -#endif - -#ifndef METAWARE - #include -#endif - -#include "KMSAgentStringUtilities.h" - -#ifdef WIN32 -#include -#include -#define gmtime_r(clock,result) ( *(result) = *gmtime(clock), result ) -#endif - -// Find header in KMSAgentStringUtilities.h -int64 UTF8ToInt64( const char* i_sNumber ) -{ - FATAL_ASSERT( i_sNumber ); - -#ifdef WIN32 - return _atoi64( i_sNumber ); -#else - return atoll( i_sNumber ); -#endif -} - -void Int64ToUTF8(char* const o_psUTF8, - int64 i_iNumber, - int i_bPad, - int i_bHex ) -{ - //string sFormat; - char sFormat[10]; - - if ( i_bPad && i_bHex ) - { -#ifdef WIN32 - strcpy(sFormat,"%016I64X"); -#else - strcpy(sFormat,"%016llX"); -#endif - } - else if ( i_bPad && !i_bHex ) - { -#ifdef WIN32 - strcpy(sFormat, "%019I64d"); -#else - strcpy(sFormat, "%019lld"); -#endif - } - else if ( !i_bPad && i_bHex ) - { -#ifdef WIN32 - strcpy(sFormat, "%I64X"); -#else - strcpy(sFormat, "%llX"); -#endif - } - else //( !i_bPad && !i_bHex ) - { -#ifdef WIN32 - strcpy(sFormat, "%I64d"); -#else - strcpy(sFormat, "%lld"); -#endif - } - -#ifndef METAWARE - int iReturn = sprintf( o_psUTF8, sFormat, i_iNumber); - - //int iReturn = K_snprintf(o_psUTF8, iBufferSize, sFormat, i_iNumber); -#else - int iReturn = sprintf( o_psUTF8, sFormat, i_iNumber); -#endif - if ( iReturn < 0 ) - { - // Our buffer wasn't big enough. Shouldn't happen. - FATAL_ASSERT(0); - } - - return; - -} - -// Find header in KMSAgentStringUtilities.h -int ConvertUTF8HexStringToBinary( - const char* i_sHexString, - unsigned char* o_pBinaryBuffer) -{ - int iHexLen = i_sHexString ? strlen(i_sHexString) : 0; - FATAL_ASSERT( (iHexLen % 2) == 0 ); // to be valid, the hex string must have an even number of characters - - if ( !o_pBinaryBuffer ) - { - return ( iHexLen / 2 ); - } - - if ( iHexLen <= 0 ) - { - return 0; - } - - int iDigitValue = 0; - - for ( int i = 0; i < iHexLen; i++) - { - if (i_sHexString[i] >= '0' && i_sHexString[i] <= '9') - { - iDigitValue = i_sHexString[i] - '0'; - } - else if (i_sHexString[i] >= 'A' && i_sHexString[i] <= 'F') - { - iDigitValue = i_sHexString[i] - 'A' + 10; - } - else if (i_sHexString[i] >= 'a' && i_sHexString[i] <= 'f') - { - iDigitValue = i_sHexString[i] - 'a' + 10; - } - else - { - iDigitValue = 0; - } - - if (i % 2 == 0) - { - o_pBinaryBuffer[i/2] = (char)(iDigitValue << 4); - } - else - { - o_pBinaryBuffer[i/2] |= (char)iDigitValue; - } - } - - return ( iHexLen / 2 ); -} - -// Find header in KMSAgentStringUtilities.h -void ConvertBinaryToUTF8HexString( - char* const o_sHexString, - const unsigned char* const i_pBinaryBuffer, - int i_iBinaryBufferSize ) -{ - const char HEXCHARS[] = "0123456789ABCDEF"; - - FATAL_ASSERT( o_sHexString ); - - if ( (i_pBinaryBuffer == 0) || (i_iBinaryBufferSize == 0) ) - { - strcpy(o_sHexString, ""); - return; - } - - FATAL_ASSERT( i_pBinaryBuffer ); - - for ( int i = 0; i < (2 * i_iBinaryBufferSize); i++ ) - { - unsigned char ucFourBits = i_pBinaryBuffer[i / 2]; - if ( (i % 2) == 0 ) // high four bits of the current byte - ucFourBits = (ucFourBits >> 4) & 0xF; // shift down and blank out upper bits - else // low four bits of the current byte - ucFourBits = ucFourBits & 0xF; // blank out upper bits - - o_sHexString[i] = HEXCHARS[ucFourBits]; - } - - o_sHexString[i_iBinaryBufferSize * 2] = '\0'; - - return; -} - - -// Find header in StringUtilities.h -void GetCurrentDateTimeISO8601UTC(char* const o_psDateTimeISO8601UTC, - int i_iLength) -{ - -#ifndef METAWARE - timeb stTime; - ftime(&stTime); - - FATAL_ASSERT( o_psDateTimeISO8601UTC ); - - struct tm* pstTime = gmtime( &(stTime.time) ); - - K_snprintf( - o_psDateTimeISO8601UTC, - i_iLength, - "%04d-%02d-%02d %02d:%02d:%02d.%03dZ", - pstTime->tm_year+1900, - pstTime->tm_mon+1, - pstTime->tm_mday, - pstTime->tm_hour, - pstTime->tm_min, - pstTime->tm_sec, - stTime.millitm); - -#else - // no time functions for the metaware environment - strcpy( o_psDateTimeISO8601UTC, "" ); -#endif - return; -} - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h --- a/usr/src/lib/libkmsagent/common/KMSAgentStringUtilities.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * @file KMSAgentStringUtilities.h - */ - -#ifndef KMSAgentStringUtilities_h -#define KMSAgentStringUtilities_h - -#ifdef WIN32 -#pragma warning(disable: 4786) -#endif - -#include - -#include "SYSCommon.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// -// Functions for conversions between integers and strings. -// - -/*---------------------------------------------------------------------------*/ -/** - * Converts a UTF8 string to an int64. - * - * @param i_sNumber: A string representation of the number to convert. - * @return The integer the input string represented. - */ -/*---------------------------------------------------------------------------*/ - int64 UTF8ToInt64( const char* i_sNumber ); - -/** - * Formats an int64 into a UTF8 string. - * - * A note on padding: If i_bPad is true, the string will be padded to the - * maximum size necessary to hold a an int64 representation. For decimal this - * is 19, for hex it is 16. - * - * @param i_iNumber The number to format. - * @param i_bPad If true, the string will be padded with zeroes. (See note above.) - * @param i_bHex Indicates whether the string format should be a hexadecimal - * representation of the integer (true) or a decimal representation (false). - * @param o_psUTF8 the string representation of the integer - * - * @return void - */ -void Int64ToUTF8(char* const o_psUTF8, - int64 i_iNumber, - int i_bPad, - int i_bHex ); - -// -// Functions for converting between binary buffer and hex string -// - -/*--------------------------------------------------------------------------*/ -/** - * Converts a UTF8 hex string to its binary representation. - * - * If o_pBinaryBuffer is null, the function will return the required size. - * (The required size is always strlen(i_sHexString)/2.) - * - * @param i_sHexString: The hex string to convert. - * @param o_pBinaryBuffer: The buffer in which to put the binary - * representation of the hex string. If this is null, the function - * returns the required size. - * If this is not null, it must be large enough to hold binary conversion. - * - * @return The number of bytes put into o_pBinaryBuffer (or the number of bytes - * required, if o_pBinaryBuffer was null). - */ -/*---------------------------------------------------------------------------*/ -int ConvertUTF8HexStringToBinary( - const char* i_sHexString, - unsigned char* o_pBinaryBuffer); - -/** - * Converts a binary buffer to its UTF8 hex string representation. - * - * @param i_pBinaryBuffer: The binary buffer to convert. - * @param i_iBinaryBufferSize: The size of i_pBinaryBuffer; - * @param o_sHexString The hex string representation of the - * binary buffer which should be at least - * (i_iBinaryBufferSize * 2) + 1 characters long - */ -void ConvertBinaryToUTF8HexString( - char* const o_sHexString, - const unsigned char* const i_pBinaryBuffer, - int i_iBinaryBufferSize ); - -// -// Functions for date strings -// - -/** - * populates o_psDateTimeISO8601UTC with a null terminated ISO 8601 - * formatted timestamp string from the current UTC time of the - * system. The timestamp length will be restricted to i_iLength-1 - * characters. - */ -void GetCurrentDateTimeISO8601UTC(char* const o_psDateTimeISO8601UTC, - int i_iLength); - -#ifdef __cplusplus -} -#endif - -#endif //KMSAgentStringUtilities_h diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAgent_direct.h --- a/usr/src/lib/libkmsagent/common/KMSAgent_direct.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,942 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file direct.h - * - * This file is included in KMSAgentStorage.cpp to provide file handling - * hooks. It also contains our EEPROM file handling functions. - * - * HISTORY: - * 8/6/07 BJB Added code for 9840D encryption sectors - * 4/7/08 BJB Changed to remove 'file is junk' message - EVT - * didn't like it. - * 4/24/08 BJB Added function call back to T10000/9840D code - * to lookup eeprom address - - * so it isn't a hardcoded value. - * 05/09/08 BJB Added being more conservative about EEPROM so as to change - * frequency of 32CA problems - * - */ - - -#ifndef KMSAGENT_DIRECT_H -#define KMSAGENT_DIRECT_H - -#include -#include - -#ifdef WIN32 -#include -#endif - -#define my_unlink(a) unlink(a) -#define my_rmdir(a) rmdir(a) - -#ifndef METAWARE - -#define myFILE FILE - -#else // METAWARE - -#include "SYSCommon.h" -#include "debug.h" -#include - -extern "C" void ecpt_trace_msg(ECPT_TRACE_ENTRY*,const char*,...); - -extern char st[256]; - - -#ifndef I_KNOW_REAL_NAMES -#undef fopen -#undef fclose -#undef fputs -#undef fgets -#undef fwrite -#undef fread -#undef unlink -#undef rmdir - -#define fopen my_eeprom_fopen -#define fclose my_eeprom_fclose -#define fputs my_eeprom_fputs -#define fwrite my_eeprom_fwrite -#define fread my_eeprom_fread -#define fgets my_eeprom_fgets -#define unlink my_eeprom_unlink -#define rmdir my_eeprom_rmdir - -#define my_eeprom_rmdir(a) (1) - -#endif - - -#include "KMSClientProfile.h" -extern char KMSAgent_Version[KMS_MAX_VERSION_LENGTH]; - -unsigned char volatile* eeprom_addr_lookup_FILESYSTEM_START_ADDR(void); -unsigned int EEPROM_Sector_size(void); - -#define FILESYSTEM_SECTOR (eeprom_addr_lookup_FILESYSTEM_START_ADDR()) -// was ((unsigned char volatile*)0xf20000) on 9840 -// was ((unsigned char volatile*)0x41dc0000) on T10000 - -#define FILESYSTEM_SECTOR_SIZE (EEPROM_Sector_size()) -// was hardcoded 0x20000 - -#define EEPROM_ERASED_BYTE 0xFF - -/* size of a file allowed (not counting the name) */ -#define EEPROM_FILE_SECT_SIZE 0x1800 - -/* size of a file name allowed (+ the null) */ -#define EEPROM_FNAME_SIZE 0x80 - -// 1000h = 4096d -#define EEPROM_BLOCK_SIZE (EEPROM_FILE_SECT_SIZE - EEPROM_FNAME_SIZE - 4) - -/* number of 'files' available */ -#define FTABLE_SIZE 0x5 - - -#define UCHAR8 unsigned char -#define UINT32 unsigned long - - -extern "C" unsigned long -EEPROM_Sector_Erase( unsigned char volatile *sector_address ); - -extern "C" unsigned long -Flash_Write( UCHAR8 *destinationP, - UCHAR8 *sourceP, - UINT32 byteCount); - -extern "C" unsigned long -Flash_Read( UCHAR8 *dstP, - UCHAR8 *srcP, - UINT32 byteCount); - -/* a eeprom file */ -struct eepromBlockStruct -{ - unsigned long fsize; - char fname[EEPROM_FNAME_SIZE]; - unsigned char fdata[EEPROM_BLOCK_SIZE]; -}; - - -struct fileSystem -{ - struct eepromBlockStruct ftable[FTABLE_SIZE]; - /* what level of toolkit wrote this - for - future compatibility */ - char writingversion[KMS_MAX_VERSION_LENGTH+1]; -}; - - -#define MODE_WRITE 0x01 -#define MODE_READ 0x02 - -#define MYFILE_CLOSED 0x0 -#define MYFILE_OPEN_READ 0x1 -#define MYFILE_OPEN_WRITE 0x2 - - -/* an open file */ -typedef struct fileStruct -{ - unsigned char *readptr; - unsigned long readsize; - unsigned char *writeptr; - struct eepromBlockStruct *memptr; - unsigned long mode; - unsigned long file_number; -} myFILE; - - -extern "C" myFILE *my_eeprom_fopen (const char *filename, const char *mode); -extern "C" int my_eeprom_fclose (myFILE *stream); -extern "C" int my_eeprom_fputs (const char *s, myFILE *stream); -extern "C" int my_eeprom_fwrite (const char *s, int size, int nobj, myFILE *f); -extern "C" int my_eeprom_fread (char *s, int size, int nobj, myFILE *f); -extern "C" char *my_eeprom_fgets (char *s, int n, myFILE *stream); -extern "C" int my_eeprom_unlink (const char *filename); -extern "C" int my_eeprom_fsys_erase(void); - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -#ifdef DEFINE_STORAGE -/* ram copy of the file system */ -struct fileSystem ramFileSystem; -int file_read = FALSE; - -/* file state - open/closed/etc */ -unsigned long fstate[FTABLE_SIZE] = {MYFILE_CLOSED, - MYFILE_CLOSED, - MYFILE_CLOSED, - MYFILE_CLOSED, - MYFILE_CLOSED}; -#else -/* ram copy of the file system */ -extern struct fileSystem ramFileSystem; -extern int file_read; - -/* file state - open/closed/etc */ -extern unsigned long fstate[FTABLE_SIZE]; - -#endif - - - -#ifdef DEFINE_STORAGE - - -extern "C" unsigned long - - -/* UNIT TEST */ -int TESTV = 0; - -/* UNIT TEST */ -#define MY_FLASH_READ(a,b,c) \ - Flash_Read(a,b,c); \ - if (TESTV++ < 5) { \ - ramFileSystem.ftable[0].fname[0] = EEPROM_ERASED_BYTE; \ - ramFileSystem.ftable[1].fsize = EEPROM_BLOCK_SIZE+1; \ - } - - - -/** - * my_eeprom_fopen() - * my filesystem fileopen - */ -extern "C" myFILE *my_eeprom_fopen(const char *filename, const char *mode) -{ - int i; - myFILE *file; - int open_for_write = TRUE; - static int Firsttime = TRUE; - int retries = 100; - - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fopen ) ; - ecpt_trace_msg( trace, "file %s", (char*)filename); - - FATAL_ASSERT(filename); - FATAL_ASSERT(mode); - - if ( (strcmp(mode,"wb") == 0) || - (strcmp(mode,"w") == 0)) - { - // write - open_for_write = TRUE; - } - else if ( (strcmp(mode,"r") == 0) || - (strcmp(mode,"rb") == 0) ) - { - // read binary - open_for_write = FALSE; - } - else - { - FATAL_APPLICATION_STATE("my_eeprom_fopen : Illegal mode"); - } - - /* read the file table from eeprom? */ - if (!file_read) - { - RETRY: - - MY_FLASH_READ((unsigned char *)&ramFileSystem, - (unsigned char *)FILESYSTEM_SECTOR, - sizeof(ramFileSystem)); - - /* Audit the filesystem - if it looks junked, reclaim bad files */ - - for (i=0; i < FTABLE_SIZE; i++) - { - if ( (ramFileSystem.ftable[i].fname[0] == EEPROM_ERASED_BYTE) || - (ramFileSystem.ftable[i].fsize > EEPROM_BLOCK_SIZE) ) - { - /* if this looks bad, don't accept this outcome until - 100 retries */ - if (retries-- > 0) - { - ecpt_trace_msg( trace, "file was junk - retrying %s", (char*)filename); - log_error_printf( - "KMSAgent_direct::fopen file %d is junk - (name %x, " - "size %x, data %x) RETRYING \n", - i, - ramFileSystem.ftable[i].fname[0], - ramFileSystem.ftable[i].fsize , - ramFileSystem.ftable[i].fdata[0]); - - goto RETRY; - } - else - { - ecpt_trace_msg( trace, "file was junk - formatting %s", (char*)filename); - log_error_printf( - "KMSAgent_direct::fopen file %d is junk - (name %x, " - "size %x, data %x) formatting it\n", - i, - ramFileSystem.ftable[i].fname[0], - ramFileSystem.ftable[i].fsize , - ramFileSystem.ftable[i].fdata[0]); - - /* set data to reasonable starting values */ - ramFileSystem.ftable[i].fname[0] = 0; - ramFileSystem.ftable[i].fsize = 0; - ramFileSystem.ftable[i].fdata[0] = 0; - } - - } - - } /* for */ - - file_read = TRUE; - - } /* !file read */ - - /* read the file table */ - for (i=0; i < FTABLE_SIZE; i++) - { - /* compare filename to ram copy filename */ - if (strcmp(filename, (const char *)ramFileSystem.ftable[i].fname) == 0) - { - - if (fstate[i] != MYFILE_CLOSED) - { - log_printf("KMSAgent_direct::fopen FN=%s file matches, " - "FILE %d WAS ALREADY OPEN for %s with mode %s" - "file size is %d \n", - filename, - i, - (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"), - mode, - ramFileSystem.ftable[i].fsize); - } - - /* create a new ramfile handle */ - file = malloc(sizeof(myFILE)); - - /* since file is being rewritten, it is now size 0 */ - if (open_for_write) - ramFileSystem.ftable[i].fsize = 0; - - /* remember the file is open */ - fstate[i]= open_for_write ? MYFILE_OPEN_WRITE : MYFILE_OPEN_READ; - - - /* if filename matches, set file pointers to it */ - file->writeptr = file->readptr = ramFileSystem.ftable[i].fdata; - file->memptr = &ramFileSystem.ftable[i]; - file->readsize = 0; - file->mode = open_for_write ? MODE_WRITE : MODE_READ; - file->file_number = i; - - - log_printf("KMSAgent_direct::fopen FN=%s file matches, " - "opening existing file number %d with mode %s" - "file size is %d \n", - filename, - i, - mode, - ramFileSystem.ftable[i].fsize); - - break; - } - - } - - /* if no existing entry was found, assign a new entry to this filename */ - if (i == FTABLE_SIZE) - { - /* couldn't find an old file and opened for read so return NULL */ - if (open_for_write == FALSE) - { - - - log_printf("KMSAgent_direct::fopen FN=%s no file match, " - "file opened for read so return NULL %d\n", - filename, - i); - - - return NULL; - } - - /* find a free file pointer */ - for (i=0; i < FTABLE_SIZE ; i++) - { - /* empty data will be 0xffffffff since it was copied - straight from EEPROM */ - if (ramFileSystem.ftable[i].fname[0] == '\0') - { - log_printf("KMSAgent_direct::fopen FN=%s no file match, " - "opening new file %d\n", - filename, - i); - - /* give it a filename - marks this as in use */ - strcpy ((char *)ramFileSystem.ftable[i].fname, filename); - - /* set filesize to zero */ - ramFileSystem.ftable[i].fsize = 0; - - /* remember the file is open */ - fstate[i]= open_for_write ? MYFILE_OPEN_WRITE : MYFILE_OPEN_READ; - - - /* create a new ramfile handle */ - file = malloc(sizeof(myFILE)); - - /* if filename matches, set file pointers to it */ - file->writeptr = file->readptr = ramFileSystem.ftable[i].fdata; - file->memptr = &ramFileSystem.ftable[i]; - file->readsize = 0; - file->mode = open_for_write ? MODE_WRITE : MODE_READ; - file->file_number = i; - - break; - } - - } - - if (i == FTABLE_SIZE) - { - log_error_printf("KMSAgent_direct::fopen FN=%s no free files \n", - filename); - /* no free entries - bail */ - return NULL; - } - - } - - /* return pointer to the myFILE struct created */ - return file; - -} - -/** - * my_eeprom_fclose() - * my filesystem fileclose - */ -extern "C" int my_eeprom_fclose(myFILE *f) -{ - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fclose ) ; - ecpt_trace_msg( trace, "entered"); - - FATAL_ASSERT(f); - -#ifdef DEBUG - log_printf("KMSAgent_direct::fclose FN=%s, " - "FILE %d " - "file size is %d \n", - ramFileSystem.ftable[f->file_number].fname, - f->file_number, - ramFileSystem.ftable[f->file_number].fsize); -#endif - - if (fstate[f->file_number] == MYFILE_CLOSED) - { - log_error_printf("KMSAgent_direct::fclose FN=%s, " - "FILE %d WAS ALREADY CLOSED " - "file size is %d \n", - ramFileSystem.ftable[f->file_number].fname, - f->file_number, - ramFileSystem.ftable[f->file_number].fsize); - } - - /* remember the file is closed */ - fstate[f->file_number]= MYFILE_CLOSED; - - /* don't rewrite eeprom unless file was opened for writing */ - if (f->mode == MODE_WRITE) - { - /* Erase the sector we are rewriting */ - EEPROM_Sector_Erase( (unsigned char*)FILESYSTEM_SECTOR ) ; - - /* remember the version of toolkit that wrote this filesystem - (for any future compatibility problems). */ - strncpy(ramFileSystem.writingversion, - KMSAgent_Version, - sizeof(KMSAgent_Version)); - - /* flush the memory indicated by myFILE * out to EEPROM */ - /* see boot_eeprom.c for details on Flash_Write */ - Flash_Write ((unsigned char*)FILESYSTEM_SECTOR, - (unsigned char*)&ramFileSystem, - FILESYSTEM_SECTOR_SIZE); - } - - /* delete the placeholder file */ - free(f); - - return 0; -} - -/** - * my_eeprom_fputs() - * my filesystem put string - */ -extern "C" int my_eeprom_fputs(const char *s, myFILE *f) -{ - /* put the string to the memory indicated by myFILE */ - int i; - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fputs ) ; - - ecpt_trace_msg (trace, "\nmy_eeprom_fputs : Entered"); - -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::my_eeprom_fputs " - "f->writeptr =%x " - "f->readptr=%x " - "f->readsize=%x " - "f->memptr=%x" - "f->memptr->fsize=%x\n", - f->writeptr, - f->readptr, - f->readsize, - f->memptr, - f->memptr->fsize); - -#endif - - FATAL_ASSERT(s); - FATAL_ASSERT(f); - - for (i=0;;i++) - { - /* end of input string? quit */ - if (*s == '\0') - break; - - /* end of max file memory, quit */ - if ((unsigned char*)s >= - (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct))) - break; - - /* copy */ - *(f->writeptr) = *s++; - f->writeptr++; - - /* increment the filesize */ - f->memptr->fsize += 1; - - } - -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::fputs wrote %d chars, " - "filesize is %d\n", - i, - f->memptr->fsize ); -#endif - - /* return how many chars were written */ - return i; -} - - -/** - * my_eeprom_fwrite() - * my filesystem put string - */ -extern "C" int my_eeprom_fwrite(const char *s, - int size, - int nobj, - myFILE *f) -{ - /* put the string to the memory indicated by myFILE */ - int i,j; - - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fwrite ) ; - ecpt_trace_msg ( trace, "Entered"); - - log_printf( - "\nKMSAgent_direct::my_eeprom_fputs " - "f->writeptr =%x " - "f->readptr=%x " - "f->readsize=%x " - "f->memptr=%x" - "f->memptr->fsize=%x\n", - f->writeptr, - f->readptr, - f->readsize, - f->memptr, - f->memptr->fsize); - - FATAL_ASSERT(s); - FATAL_ASSERT(f); - FATAL_ASSERT((size*nobj) > 0); - - for (i=0; i= - (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct))) - goto DONE; - - /* copy */ - *(f->writeptr) = *s++; - f->writeptr++; - - /* increment the filesize */ - f->memptr->fsize += 1; - } - - } - - DONE: - - -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::fwrite wrote %d chars, " - "filesize is %d\n", - i, - f->memptr->fsize ); -#endif - - /* return how many objects were written */ - return i; -} - - - -/** - * my_eeprom_fgets() - * my filesystem getstring - */ -extern "C" char *my_eeprom_fgets(char *s, int n, myFILE *f) -{ - /* put the string to the memory indicated by myFILE */ - int i; - char *tmp = s; - - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fgets ) ; - ecpt_trace_msg (trace, "entered"); - - FATAL_ASSERT(s); - FATAL_ASSERT(n > 0); - FATAL_ASSERT(f); - -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::my_eeprom_fgets from file %s " - "fileptr %x " - "readptr = %x " - "readsize = %d " - "filesize = %d \n", - f->memptr->fname, - f, - f->readptr, - f->readsize, - f->memptr->fsize); -#endif - - /* get up to n-1 (and a \0) chars */ - for (i=0; i < n; i++) - { - /* end of read line? quit */ - if (*f->readptr == '\n') - { - /* increment the number of bytes read */ - f->readptr++; - f->readsize++; - break; - } - - /* trying to read beyond what was written? quit */ - if (f->readsize > - f->memptr->fsize) - { -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::fgets eof after %d chars, " - "readsize is %d " - "filesize is %d\n", - i, - f->readsize, - f->memptr->fsize); -#endif - return NULL; - } - - /* trying to read beyond max file memory, quit */ - if ((unsigned char*)f->readptr >= - (unsigned char*)(f->memptr + sizeof(struct eepromBlockStruct))) - { -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::fgets end of max file after %d chars " - "readsize is %d " - "filesize is %d\n", - i, - f->readsize, - f->memptr->fsize); -#endif - /* EOF or error is signalled by NULL return */ - return NULL; - } - - /* copy a char */ - *tmp++ = *f->readptr; - - /* increment the number of bytes read */ - f->readptr++; - f->readsize++; - - } /* for */ - - /* terminate the returned string with a 0, but not a \n */ - *tmp='\0'; - -#ifdef DEBUG - /* terminate returned string after a non-absurd number of chars - */ - log_printf( - "\nKMSAgent_direct::fgets string [%s] " - "end of line after %d chars " - "readsize is %d " - "filesize is %d\n", - s, - i, - f->readsize, - f->memptr->fsize); -#endif - - /* on success, return the original pointer */ - return s; -} - - - - -/** - * my_eeprom_fread() - * my filesystem read a file - */ -extern "C" int my_eeprom_fread(char *s, int size, int nobj, myFILE *f) -{ - /* put the string to the memory indicated by myFILE */ - int i,j; - - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fread ) ; - ecpt_trace_msg (trace, "entered"); - - FATAL_ASSERT(s); - FATAL_ASSERT(f); - FATAL_ASSERT((size*nobj) > 0); - - for (i=0; i= - (unsigned char*) (f->memptr + f->memptr->fsize) ) - goto DONE; - - /* copy */ - *s++ = *(f->readptr); - f->readptr++; - } - - } - - DONE: - -#ifdef DEBUG - log_printf( - "\nKMSAgent_direct::fread read %d chars, " - "filesize is %d\n", - i, - f->memptr->fsize ); -#endif - - /* return how many objects were written */ - return i; - -} - - - - - - -/** - * my_eeprom_unlink() - delete the file named - */ -extern "C" int my_eeprom_unlink(const char *filename) -{ - int i; - - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fgets ) ; - ecpt_trace_msg (trace, "Entered fn=%s", (char*)filename); - - /* assume the file is closed */ - FATAL_ASSERT(filename); - - /* read the file table */ - for (i=0; i < FTABLE_SIZE; i++) - { - - if (fstate[i] != MYFILE_CLOSED) - { - log_error_printf("KMSAgent_direct::unlink FN=%s file matches, " - "FILE %d WAS STILL OPEN for %s" - "file size is %d \n", - filename, - i, - (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"), - ramFileSystem.ftable[i].fsize); - } - - /* compare input filename to ram copy filename */ - if (strcmp(filename, (const char*)ramFileSystem.ftable[i].fname) == 0) - { - /* if filename matches, zero it out to delete the file */ - ramFileSystem.ftable[i].fname[0] = '\0'; - ramFileSystem.ftable[i].fsize = 0; - ramFileSystem.ftable[i].fdata[0] = 1; - - /* remember the file is closed */ - fstate[i]= MYFILE_CLOSED; - - EEPROM_Sector_Erase( FILESYSTEM_SECTOR ) ; - - /* remember the version of toolkit that wrote this filesystem - (for any future compatibility problems). */ - strncpy(ramFileSystem.writingversion, - KMSAgent_Version, - sizeof(KMSAgent_Version)); - - /* flush the memory indicated by myFILE * out to EEPROM */ - Flash_Write ((unsigned char*)FILESYSTEM_SECTOR, - (unsigned char*)&ramFileSystem, - FILESYSTEM_SECTOR_SIZE); - - break; - } - - } - -#ifdef DEBUG - log_printf ("my_eeprom_unlink : returning"); -#endif - - if (i == FTABLE_SIZE) - return -1; - - /* success */ - return 0; -} - - -/** - * my_eeprom_fsys_erase() - delete all files - */ -extern "C" int my_eeprom_fsys_erase(void) -{ - int i; - - ECPT_TRACE_ENTRY *trace = NULL; - ECPT_TRACE( trace, my_eeprom_fread ) ; - ecpt_trace_msg (trace, "my_eeprom_fsys_erase : entering "); - - /* read the file table */ - for (i=0; i < FTABLE_SIZE; i++) - { - if (fstate[i] != MYFILE_CLOSED) - { - log_error_printf("KMSAgent_direct::fsys_erase FN=%s file " - "FILE %d WAS STILL OPEN for %s " - "file size is %d \n", - ramFileSystem.ftable[i].fname, - i, - (fstate[i] == MYFILE_OPEN_WRITE ? "WRITE": "READ"), - ramFileSystem.ftable[i].fsize); - } - - /* zero filename out to delete the file */ - ramFileSystem.ftable[i].fname[0] = '\0'; - ramFileSystem.ftable[i].fsize = 0; - ramFileSystem.ftable[i].fdata[0] = 2; - - /* remember the file is closed */ - fstate[i]= MYFILE_CLOSED; - - EEPROM_Sector_Erase( FILESYSTEM_SECTOR ) ; - - /* remember the version of toolkit that wrote this filesystem - (for any future compatibility problems). */ - strncpy(ramFileSystem.writingversion, - KMSAgent_Version, - sizeof(KMSAgent_Version)); - - /* flush the memory indicated by myFILE * out to EEPROM */ - Flash_Write ((unsigned char*)FILESYSTEM_SECTOR, - (unsigned char*)&ramFileSystem, - FILESYSTEM_SECTOR_SIZE); - - - } - -#ifdef DEBUG - log_printf ("\nmy_eeprom_fsys_erase : returning"); -#endif - - if (i == FTABLE_SIZE) - return -1; - - /* success */ - return 0; -} - - - - -#endif // DEFINE_STORAGE -#endif // METAWARE -#endif - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAuditLogger.cpp --- a/usr/src/lib/libkmsagent/common/KMSAuditLogger.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,191 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAuditLogger.cpp - */ - -#ifndef WIN32 -//#include -#include -#endif - -#include - -#ifndef METAWARE -#include -#endif - -#include - -#include "KMSAuditLogger.h" -#include "ApplianceParameters.h" - -#define AGENT_LOG_FILE "KMSAgentLog.log" - -// globals for file logging -static FILE* g_fpLogFileHandle = NULL; -static K_MUTEX_HANDLE g_stLogFileMutex; -static char g_sLogFileName[MAX_LOG_FILE_NAME_LENGTH]; - -// Find header in AuditLogger.h -int InitializeFileLogging( const char* const i_sWorkingDirectory ) -{ - FATAL_ASSERT( i_sWorkingDirectory ); - if ( g_fpLogFileHandle != NULL ) - { - return false; - } - - char sLogFileName[MAX_LOG_FILE_NAME_LENGTH]; - strncpy( sLogFileName, i_sWorkingDirectory, MAX_LOG_FILE_NAME_LENGTH ); - - if ( sLogFileName[ strlen( sLogFileName )-1 ] != PATH_SEPARATOR ) - { - sLogFileName[ strlen(sLogFileName) ] = PATH_SEPARATOR ; - sLogFileName[ strlen(sLogFileName) + 1 ] = '\0'; - } - - strncat( sLogFileName, AGENT_LOG_FILE, MAX_LOG_FILE_NAME_LENGTH ); - - strcpy(g_sLogFileName, sLogFileName); - - if ( K_CreateMutex( &g_stLogFileMutex ) != K_SYS_OK ) - { - return false; - } - - if ( NULL == ( g_fpLogFileHandle = fopen( g_sLogFileName, "a+t" ) ) ) - { - return false; - } - - return true; -} - -// Find header in AuditLogger.h -int FinalizeFileLogging() -{ - FATAL_ASSERT( g_fpLogFileHandle != NULL ); - - K_DestroyMutex( g_stLogFileMutex ); - - bool bSuccess = ( 0 == fclose( g_fpLogFileHandle ) ); - - g_fpLogFileHandle = NULL; - - return bSuccess; -} - -// Find header in AuditLogger.h -extern "C" int LogToFile( int i_iErrno, - const char* const i_sLogLine ) -{ - if ( g_fpLogFileHandle == NULL ) - { - return false; - } - - CAutoMutex oAutoMutex( g_stLogFileMutex ); - - if (0 > fputs( i_sLogLine, g_fpLogFileHandle ) ) - { - return false; - } - - if ( 0 > fputs( "\n", g_fpLogFileHandle ) ) - { - return false; - } - - if ( fflush( g_fpLogFileHandle ) != 0 ) - { - return false; - } - - return true; -} - -static const int g_iMaxLogFileLineLength = MAX_LOG_FILE_LINE_LENGTH; - - -int Log_function( - int i_iErrno, - const char* const i_sOperation, - const char* const i_sEntityID, - const char* const i_sNetworkAddress, - const char* const i_sMessage ) -{ - char sFileLogEntry[500]; - const int iTempSize = 100; - - timeb stTime; - ftime(&stTime); - - struct tm* pstTime = gmtime( &(stTime.time) ); - - K_snprintf( - sFileLogEntry, - iTempSize, - "%04d-%02d-%02d %02d:%02d:%02d.%03dZ", - pstTime->tm_year+1900, - pstTime->tm_mon+1, - pstTime->tm_mday, - pstTime->tm_hour, - pstTime->tm_min, - pstTime->tm_sec, - stTime.millitm); - - if ( i_sEntityID ) - { - strcat(sFileLogEntry," AgentID="); - strcat(sFileLogEntry,i_sEntityID); - } - - if ( i_sNetworkAddress ) - { - strcat(sFileLogEntry," KMA Address="); - strcat(sFileLogEntry, i_sNetworkAddress); - } - if ( i_sOperation ) - { - strcat(sFileLogEntry, " Operation="); - strcat(sFileLogEntry,i_sOperation); - } - - if ( i_sMessage ) - { - strcat(sFileLogEntry, " Msg="); - strcat(sFileLogEntry, i_sMessage); - } - - return LogToFile( i_iErrno, sFileLogEntry ); -} - -int Log2(char* msg1, - char* msg2) -{ - return 0; -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSAuditLogger.h --- a/usr/src/lib/libkmsagent/common/KMSAuditLogger.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSAuditLogger.h - */ - -#ifndef KMSAuditLogger_h -#define KMSAuditLogger_h - -#ifndef METAWARE -#ifdef WIN32 -#pragma warning(disable: 4786) -#endif - -// SYSCommon.h needs the following include -#include - -#include "SYSCommon.h" -#include "AutoMutex.h" -#endif // METAWARE - -#include "ApplianceParameters.h" - - -#define MAX_LOG_FILE_LINE_LENGTH MAXIMUM_UTF8_STRING_VALUE_LENGTH + 128 -#define MAX_LOG_FILE_NAME_LENGTH 256 - -/** - * Opens a logging file for appending, or creation, - * with the name "KMSAgentLog.log" beneath the specified directory. - * @return true on success - */ -int InitializeFileLogging( const char* const i_sWorkingDirectory ); - -/** - * closes the log file - * @return true if successful close - */ -int FinalizeFileLogging(); - -/** - * write a log entry to the log file - * @return true if successful - */ -extern "C" int LogToFile( int i_iErrno, - const char* const i_sLogLine ); - -/** - * Formats a message and to the log file using LogToFile, - * generating a ISO8601UTC timestamp and - * appending the various function arguments together. - * @param i_sOperation optional, an operation and error condition string - * @param i_sEntityID optional, the name of the entity performing the operation - * @param i_sNetworkAddress optional, the address of the KMS involved in the operation - * @param i_sMessage optional, the error message details - * @return 0 if successful - */ -int Log_function( - int i_iErrno, - const char* const i_sOperation, - const char* const i_sEntityID, - const char* const i_sNetworkAddress, - const char* const i_sMessage ); - -// helper macro to convert value to a string -#define Log(a,b,c,d) Log_function(a, #a, b, c, d) - -#define AUDIT_CLIENT_LOG_BASE 0x200 - -#define AUDIT_CLIENT_LOAD_PROFILE_CREATE_DIRECTORY_FAILED (AUDIT_CLIENT_LOG_BASE + 0x0) -#define AUDIT_CLIENT_LOAD_PROFILE_CREATE_PROFILE_CONFIG_FAILED (AUDIT_CLIENT_LOG_BASE + 0x1) -#define AUDIT_CLIENT_LOAD_PROFILE_CREATE_PROFILE_CONFIG_SUCCEEDED (AUDIT_CLIENT_LOG_BASE + 0x2) -#define AUDIT_CLIENT_SAVE_CLUSTER_INFORMATION_SUCCEEDED (AUDIT_CLIENT_LOG_BASE + 0x3) - -#define AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_SUCCESS (AUDIT_CLIENT_LOG_BASE + 0x4) -#define AUDIT_CLIENT_GET_CERTIFICATE_SUCCESS (AUDIT_CLIENT_LOG_BASE + 0x5) -#define AUDIT_CLIENT_LOAD_PROFILE (AUDIT_CLIENT_LOG_BASE + 0x6) -#define AUDIT_CLIENT_GetClusterInformation (AUDIT_CLIENT_LOG_BASE + 0x7) - -#define AGENT_LOADBALANCER_FAILOVER (AUDIT_CLIENT_LOG_BASE + 0x8) - -#define AUDIT_CLIENT_AGENT_GET_CLUSTER_INFORMATION_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x9) -#define AUDIT_CLIENT_AGENT_SELECT_APPLIANCE_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0xa) -#define AUDIT_CLIENT_AGENT_LOAD_PROFILE_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0xc) -#define AUDIT_CLIENT_AGENT_UNLOAD_PROFILE_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0xd) -#define AUDIT_CLIENT_AGENT_LIST_KEY_GROUPS_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0xe) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0xf) -#define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x10) -#define AUDIT_CLIENT_AGENT_DISASSOCIATE_DATA_UNIT_KEYS_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x11) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x12) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x13) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x14) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x15) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x16) -#define AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x17) -#define AUDIT_CLIENT_AGENT_CREATED_AUDIT_LOG_INVALID_PARAMETERS (AUDIT_CLIENT_LOG_BASE + 0x18) -#define AUDIT_CLIENT_AGENT_LOAD_PROFILE_PROFILE_ALREADY_LOADED (AUDIT_CLIENT_LOG_BASE + 0x19) -#define AGENT_LOADBALANCER_AESKEYUNWRAP_GETKWK_RETURNED_NULL (AUDIT_CLIENT_LOG_BASE + 0x1a) -#define AGENT_LOADBALANCER_AESKEYUNWRAP_KEY_UNWRAP_FAILED (AUDIT_CLIENT_LOG_BASE + 0x1b) -#define AUDIT_CLIENT_FILTER_CLUSTER_FAILED (AUDIT_CLIENT_LOG_BASE + 0x1c) -#define AUDIT_CLIENT_FILTER_CLUSTER (AUDIT_CLIENT_LOG_BASE + 0x1d) - - - - - - -int Log_function(int i_iErrno, - const char* const i_sOperation, - const char* const i_sEntityID, - const char* const i_sNetworkAddress, - const char* const i_sMessage ); - -/** - * Log generically 2 parameters (presumably to the screen, - * but could be to a file - */ -extern "C" int Log2(char* msg1, - char* msg2); - -#endif //KMSAuditLogger_h diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSClientProfile.cpp --- a/usr/src/lib/libkmsagent/common/KMSClientProfile.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2878 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include - -#if !defined(UNIX) && !defined(METAWARE) -#include "KMSAgent_direct.h" -#endif - -#include - -#include "KMSClientProfile.h" - -#include "KMSAgent.h" -#include "KMS_CAStub.h" -#include "KMS_CertificateStub.h" -#include "KMS_DiscoveryStub.h" -#include "KMSClientProfileImpl.h" -#include "KMSAuditLogger.h" -#include "KMSAgentSoapUtilities.h" -#include "KMSAgentStringUtilities.h" - - -#include "KMSAgentPKICommon.h" // must be before agentstorage - -#include "stdsoap2.h" -#include "KMSAgentStorage.h" // uses KMSClientProfile - - -#include "KMSAgentWebServiceNamespaces.h" -#include "k_setupssl.h" -#include "KMSAgentChallenge.h" -#include "KMSAgentCryptoUtilities.h" -#include "ApplianceParameters.h" -#include "AutoMutex.h" - -#include "KMSAgentLoadBalancer.h" -#include "KMSAgentDataUnitCache.h" - -#include "ClientSoapFaultCodes.h" -#ifdef METAWARE -#include "debug.h" -#include "sizet.h" -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -#include "literals.h" -#endif -#include "KMSAgentAESKeyWrap.h" - -#if defined(METAWARE) && defined(DEBUG) -#include "debug.h" -#endif -#include "KMSAuditLogger.h" -#include "KMSClientProfileImpl.h" - -#ifdef METAWARE -extern "C" void -tnMsg( const char *format, - ... ); -#endif - -bool g_bUseFileLog = false; -char g_wsWorkingDirectory[KMS_MAX_PATH_LENGTH+1] = "./"; - - -static bool InitializeLogging( - const utf8cstr i_wsWorkingDirectory, - int i_bUseFileLog ) -{ - FATAL_ASSERT( !i_bUseFileLog || i_wsWorkingDirectory ); - - bool bFileLogSuccess = true; - - g_bUseFileLog = ( i_bUseFileLog != 0 ); - - // InitializeFileLogging must always be called, - // because the file is always used by FATALs. - - bFileLogSuccess = InitializeFileLogging( i_wsWorkingDirectory ) ? true:false; - - return bFileLogSuccess; -} - -static void FinalizeLogging() -{ - // FinalizeFileLogging must always be called, - // because the file is always used by FATALs. - FinalizeFileLogging(); - - return; -} - - - - -/*--------------------------------------------------------------------------- - * Function: KMSClient_InitializeLibrary - * - *--------------------------------------------------------------------------*/ - -bool KMSClient_InitializeLibrary( - const utf8cstr i_wsWorkingDirectory, - int i_bUseFileLog) -{ - bool bSuccess; - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_InitializeLibrary : ENTERING"); -#endif - - // setup SSL - bSuccess = K_SetupSSL() == 1; - if(!bSuccess) - { - return false; - } - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_InitializeLibrary : set current directory"); -#endif - - // if i_wsWorkingDirectory is null, caller means current directory - if ( i_wsWorkingDirectory != NULL ) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_InitializeLibrary : check working directory"); -#endif - - // string is there but is empty or junk - if (strlen(i_wsWorkingDirectory) <= 0) - { - strcpy(i_wsWorkingDirectory, "."); - } - - if ( strlen(i_wsWorkingDirectory) >= KMS_MAX_PATH_LENGTH ) - { - return false; - } - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_InitializeLibrary : set global working directory"); -#endif - - // set global working directory to input - strncpy(g_wsWorkingDirectory, - i_wsWorkingDirectory, - KMS_MAX_PATH_LENGTH); - g_wsWorkingDirectory[KMS_MAX_PATH_LENGTH] = 0; - } - else - { - strcpy(g_wsWorkingDirectory, "."); - } - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_InitializeLibrary : Initialize logging"); -#endif - - // initialize file logging - bSuccess = InitializeLogging( g_wsWorkingDirectory, - i_bUseFileLog); - - return bSuccess; -} - - -/*--------------------------------------------------------------------------- - * Function: KMSClient_FinalizeLibrary - *--------------------------------------------------------------------------*/ -bool KMSClient_FinalizeLibrary() -{ -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_FinalizeLibrary : ENTERING"); -#endif - - K_CleanupSSL(); - - FinalizeLogging(); - - return true; /* always */ -} - - -int LogError_lastErrno; - - -/** - * Construct a message for the KMSAuditLogger and store the message - * in the profile as the last error message. - */ -void LogError_function(KMSClientProfile *i_pProfile, - int i_iErrno, - const char* i_sOperation, - const char* i_sEntityID, - const char* i_sNetworkAddress, - const char* i_sMessage ) -{ - FATAL_ASSERT( i_pProfile && i_sOperation ); - - // save for caller's use - this shouldn't be a global, but I don't - // want this as an item in the profile as I don't want it persisted - LogError_lastErrno = i_iErrno; - - // log the message to a data file (and internal logs) -#ifndef METAWARE - if ( g_bUseFileLog ) -#endif - { - Log_function(i_iErrno, - i_sOperation, - i_sEntityID, - i_sNetworkAddress, - i_sMessage); - } - -#ifdef METAWARE - /* print this to the T10000/9840 VOP */ - /* NOTE the \n is important to VOP - leave it in */ - tnMsg("`msg`KMS2.0:msg#=%i,op=%s\r\n", - i_iErrno, - i_sOperation); - - tnMsg("`msg`msg=%s,eid=%s,addr=%s\r\n", - i_sMessage, - i_sEntityID, - i_sNetworkAddress); - -#endif - - // copy the error message into the profile (for later reference) - strncpy(i_pProfile->m_wsErrorString, - i_sOperation, - KMS_MAX_ERROR_STRING); - - // make sure to NUL out the end - i_pProfile->m_wsErrorString[KMS_MAX_ERROR_STRING] = 0; - - if ( i_sEntityID ) - { - strncat(i_pProfile->m_wsErrorString, - i_sEntityID, - KMS_MAX_ERROR_STRING); - } - - if ( i_sNetworkAddress ) - { - strncat(i_pProfile->m_wsErrorString, - ",Address=", - KMS_MAX_ERROR_STRING); - strncat(i_pProfile->m_wsErrorString, - i_sNetworkAddress, - KMS_MAX_ERROR_STRING); - } - - if ( i_sMessage ) - { - strncat(i_pProfile->m_wsErrorString, - ",Msg=", - KMS_MAX_ERROR_STRING); - strncat(i_pProfile->m_wsErrorString, - i_sMessage, - KMS_MAX_ERROR_STRING); - } - - // make sure to NUL out the end - i_pProfile->m_wsErrorString[KMS_MAX_ERROR_STRING] = 0; - -} - -// see KMSClientProfileImpl.h -bool SSL_InvalidCertificate (const char * const i_sErrorString) -{ - if ( - // OpenSSL generates this msg - strstr(i_sErrorString, "sslv3 alert certificate unknown")) - { - return true; - } - return false; - -} - -// see KMSClientProfileImpl.h -bool ServerError (const char * i_sErrorString, int i_iErrno ) -{ - // The Client Soap Fault Code returned by the KMA - // may be at the start of i_sErrorString or immediately - // follwing "SoapFaultString=" depending on the caller's - // string - - int iErrorCode; - - const char* sFaultstringStart = strstr(i_sErrorString, "SoapFaultString=" ); - if ( sFaultstringStart ) - { - iErrorCode = GET_FAULT_CODE( sFaultstringStart + strlen("SoapFaultString=") ); - } - else - { - // This may be zero if there is no error code at the start of the string. - iErrorCode = GET_FAULT_CODE( i_sErrorString ); - } - - // the following is commented out so the former check can be observed. This check is no longer - // made since invalid certificate failures may be due to a KMA that is behind on - // replication updates hence failover would succeed. -// if ( -// // OpenSSL generates this msg -// SSL_InvalidCertificate(i_sErrorString)) -// { -// return false; -// } - - if ( - // when the KMA is locked - iErrorCode == CLIENT_ERROR_AGENT_APPLIANCE_LOCKED - - // KMS 2.2 change when the KMA is locked - || iErrorCode == CLIENT_ERROR_MANAGER_APPLIANCE_LOCKED - - // KMS 2.2 change for core security internal error - || iErrorCode == CLIENT_ERROR_MANAGER_INTERNAL - - // if the KMA's pre-gen'd key pool is depleted - || iErrorCode == CLIENT_ERROR_AGENT_NO_READY_KEYS - - // if the KMA's HSM is broke and the KMA is in FIPS mode - || iErrorCode == CLIENT_ERROR_SERVER_HSM_REQUIRED_BUT_MISSING - - // when the server is too slow - || NULL != strstr( i_sErrorString, "Timeout" ) - || NULL != strstr( i_sErrorString, "Operation interrupted or timed out" ) - - // The Appliance is powered down, or is not reachable - || NULL != strstr( i_sErrorString, "Connection refused" ) - - || NULL != strstr( i_sErrorString, "Unknown error" ) - - // SOAP EOF - || NULL != strstr( i_sErrorString, "End of file or no input:" ) - - // Appliance server software is not running (while Appliance machine is OK) - || NULL != strstr( i_sErrorString, "connect failed in tcp_connect()" ) - - // If the server has an internal error but still responds - || NULL != strstr( i_sErrorString, "Server Error" ) - - // OpenSSL protocol errors (Note: the SSL_ERROR_SSL may be due - // to invalid client-side values, but for now it's used as a - // catch-all; a side-effect is that any actual invalid client-side - // value will cause one audit log entry to be created on each - // Appliance in the cluster). - || NULL != strstr( i_sErrorString, - "Error observed by underlying BIO: No error" ) - || NULL != strstr( i_sErrorString, - "EOF was observed that violates the protocol" ) - || NULL != strstr( i_sErrorString, - "SSL_ERROR_SSL" ) ) - { - return true; - } - -#ifndef WIN32 - // check for errno values that imply connection problems to the server - switch (i_iErrno) - { - case ECONNABORTED : return true; // Connection aborted. - case ECONNREFUSED : return true; // Connection refused. - case ECONNRESET : return true; // Connection reset. - case EHOSTUNREACH : return true; // Host is unreachable. - case ENETDOWN : return true; // Network is down. - case ENETRESET : return true; // Connection aborted by network. - case ENETUNREACH : return true; // Network unreachable. - case ENOPROTOOPT : return true; // Protocol not available. -#ifndef METAWARE - case ETIME : return true; // Stream ioctl() timeout. -#endif - case ETIMEDOUT : return true; // Connection timed out. - } -#endif - // at this point we conclude its a client side issue - return false; -} - -/*--------------------------------------------------------------------------- - * Function: KMSClient_GetLastErrorMessage - * - *--------------------------------------------------------------------------*/ - -// extern "C" -utf8char * KMSClient_GetLastErrorMessage(KMSClientProfile *i_pProfile) -{ - FATAL_ASSERT(i_pProfile); - - CAutoMutex oAutoMutex( 0 ); - if ( i_pProfile->m_pLock ) - { - oAutoMutex.Lock( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - } - - return i_pProfile->m_wsErrorString; -} - - -/*--------------------------------------------------------------------------- - * Function: KMSClient_RetrieveEntityCertificate - * Get the Root CA Certificate and store it into the profile - *--------------------------------------------------------------------------*/ -static bool KMSClient_RetrieveEntityCertificate( - KMSClientProfile* i_pProfile, - utf8cstr i_wsEntityID, - utf8cstr i_wsPassphrase, - char* const o_sHexHashedPassphrase ) -{ - FATAL_ASSERT( i_pProfile && i_wsEntityID && i_wsPassphrase ); - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_RetrieveEntityCertificate : entered"); -#endif - - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - - strcpy(o_sHexHashedPassphrase, ""); - - bool bSuccess = true; - bool bTryFailOver = false; - - struct soap *pstCASoap; - pstCASoap = (struct soap *) malloc( sizeof(struct soap) ); - if(pstCASoap == NULL) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("Malloc %x pstCASoap returned null\n", sizeof(struct soap)); -#endif - LogError(i_pProfile, - LoadProfile_AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_SOAP_ERROR, - NULL, - NULL, - "malloc failure for pstCASoap" ); - return false; - } - - // initialize the SOAP connection that will get the RootCA - soap_init2( pstCASoap, (SOAP_XML_STRICT | SOAP_C_UTFSTRING), (SOAP_XML_STRICT | SOAP_C_UTFSTRING) ); - -#ifdef METAWARE - K_SetupCallbacks ( pstCASoap ); -#endif - - CCertificate* pRootCACertificate = 0; - CCertificate* pEntityCertificate = 0; - CPrivateKey* pEntityPrivateKey = 0; - - soap_set_namespaces( pstCASoap, KMS_CA_namespaces ); - - pstCASoap->connect_timeout = i_pProfile->m_iTransactionTimeout; - pstCASoap->send_timeout = i_pProfile->m_iTransactionTimeout; - pstCASoap->recv_timeout = i_pProfile->m_iTransactionTimeout; - - struct soap *pstCertificateSoap; - - pstCertificateSoap = (struct soap *) malloc( sizeof(struct soap) ); - - if(pstCertificateSoap == NULL) - { -#if defined(METAWARE) - log_printf("Malloc %x pstCertificateSoap returned null\n", - sizeof(struct soap)); -#endif - soap_free( pstCASoap ); - free(pstCASoap); - return false; - } - - // initialize the SOAP connection that will get the Certificate - soap_init2( pstCertificateSoap, (SOAP_XML_STRICT | SOAP_C_UTFSTRING), (SOAP_XML_STRICT | SOAP_C_UTFSTRING) ); - -#ifdef METAWARE - K_SetupCallbacks ( pstCertificateSoap ); -#endif - - soap_set_namespaces( pstCertificateSoap, KMS_Certificate_namespaces ); - - pstCertificateSoap->connect_timeout = i_pProfile->m_iTransactionTimeout; - pstCertificateSoap->send_timeout = i_pProfile->m_iTransactionTimeout; - pstCertificateSoap->recv_timeout = i_pProfile->m_iTransactionTimeout; - - CAgentLoadBalancer oLoadBalancer(i_pProfile); - int iIndex = oLoadBalancer.Balance(); - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_RetrieveEntityCertificate : call KMS_CA__RetrieveRootCACertificate"); -#endif - - // get the server's URL that will provide SOAP services - do - { - bSuccess = true; - bTryFailOver = false; - bool bFailedOnRetrieveRootCA = false; - const char* sURL = 0; - - if ( bSuccess ) - { - sURL = oLoadBalancer.GetHTTPURL(iIndex, - i_pProfile->m_iPortForCAService); - - if ( !sURL ) - { - bSuccess = false; - } - } - - if ( bSuccess ) - { - strncpy(i_pProfile->m_sURL, sURL, KMS_MAX_URL); - i_pProfile->m_sURL[KMS_MAX_URL] = 0; - } - - - // SOAP CALL - retrieve Root CA Certificate from the Server - struct KMS_CA:: - KMS_CA__RetrieveRootCACertificateResponse stRootCACertificateResponse; - - if ( bSuccess ) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_RetrieveCertificate : call KMS_CA__RetrieveRootCACertificate again"); -#endif - bSuccess = - KMS_CA::soap_call_KMS_CA__RetrieveRootCACertificate( - pstCASoap, - i_pProfile->m_sURL, - NULL, - i_wsEntityID, - stRootCACertificateResponse ) == SOAP_OK; - - if ( !bSuccess ) - { - GetSoapFault(sSoapFaultMsg, (struct soap*)pstCASoap); - GetPeerNetworkAddress(sKmaAddress, pstCASoap); - LogError(i_pProfile, - LoadProfile_AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg ); - - bTryFailOver = ServerError(GET_SOAP_FAULTSTRING(pstCASoap), pstCASoap->errnum); - bFailedOnRetrieveRootCA = true; - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 1\n"); - } -#endif - - - // Validate the SOAP response - if ( bSuccess ) - { - if ( stRootCACertificateResponse.RootCACertificate.__size < 1 || - stRootCACertificateResponse.RootCACertificate.__ptr == NULL || - stRootCACertificateResponse.AuthenticationHashIterationCount < - MIN_AUTHENTICATION_ITERATION_COUNT || - stRootCACertificateResponse.AuthenticationHashIterationCount > - MAX_AUTHENTICATION_ITERATION_COUNT || - stRootCACertificateResponse.ClientAuthenticationChallenge.__size != - AUTHENTICATION_CHALLENGE_LENGTH || - stRootCACertificateResponse.ClientAuthenticationChallenge.__ptr == NULL ) - { - bSuccess = false; - - GetPeerNetworkAddress(sKmaAddress, pstCASoap); - LogError(i_pProfile, - AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_INVALID_RESPONSE_FORMAT, - NULL, - sKmaAddress, - NULL); - } - else - { - GetPeerNetworkAddress(sKmaAddress, pstCASoap); - Log(AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_SUCCESS, - NULL, - sKmaAddress, - NULL); - } - - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 2\n"); - } -#endif - - // build our RootCACertificate object - if ( bSuccess ) - { - pRootCACertificate = new CCertificate; - - // make sure the new was successful - bSuccess = ( pRootCACertificate != 0 ); - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 3\n"); - } -#endif - - if ( bSuccess ) - { - // OVERLOADED Load method - 3 parameters means - // recall from BUFFER - bSuccess = - pRootCACertificate->Load( - stRootCACertificateResponse.RootCACertificate.__ptr, // to here - stRootCACertificateResponse.RootCACertificate.__size, // size - PKI_FORMAT ); // ignored - - if( !bSuccess ) - { - GetPeerNetworkAddress(sKmaAddress, pstCASoap); - LogError(i_pProfile, - AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_INVALID_CA_CERTIFICATE_FORMAT, - NULL, - sKmaAddress, - NULL); - } - - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 4\n"); - } -#endif - - - if ( bSuccess ) - { - // save the built CACertificate object to a FILE (i_pProfile gets the - // persistent handle to that file) - bSuccess = StoreCACertificate( i_pProfile, pRootCACertificate ); - - if ( !bSuccess ) - { - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_SAVE_CA_CERTIFICATE_FAILED, - NULL, - NULL, - NULL); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 5\n"); - } -#endif - - //------------------------------- - // Initialize SSL - use SERVER AUTH - //------------------------------- - if ( bSuccess ) - { - // SERVER_AUTHENTICATION needs just the pstCertificateSoap - bSuccess = - K_soap_ssl_client_context( - i_pProfile, // in ->m_wsProfileName,->m_sHexHashedPassphrase - pstCertificateSoap, // in - soap structure - SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION // in - flags - ) == SOAP_OK; - - if ( !bSuccess ) - { - GetSoapFault(sSoapFaultMsg, (struct soap*)pstCertificateSoap); - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg ); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 6\n"); - } -#endif - - // hash the passphrase passed in - char sHexAuthenticationSecret[2*HASH_LENGTH+1]; - - if ( bSuccess ) - { - bSuccess = ComputeFixedEntityHashedPassphraseAndAuthenticationSecret( - i_wsPassphrase, - o_sHexHashedPassphrase, - stRootCACertificateResponse.AuthenticationHashIterationCount, - sHexAuthenticationSecret ); - - if ( !bSuccess ) - { - LogError(i_pProfile,AUDIT_CLIENT_COMPUTE_FIXED_FAILED, - NULL, - NULL, - NULL); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 7\n"); - } -#endif - - // copy received Root CA into buffer for input - // into challenge-response computation - unsigned char aRootCACertificate[MAX_CERT_SIZE]; - int iRootCACertificateLength; - - if ( bSuccess ) - { - // OVERLOADED save method - save iRootCACertificateLength to aRootCACertificate - // buffer - bSuccess = pRootCACertificate->Save( - aRootCACertificate, - MAX_CERT_SIZE, - &iRootCACertificateLength, - PKI_FORMAT ); - - if ( !bSuccess ) - { - LogError(i_pProfile,AUDIT_CLIENT_SAVE_ROOTCA_FAILED, - NULL, - NULL, - NULL); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 8\n"); - } -#endif - - // respond to server's challenge - unsigned char aAuthenticationSecret[AUTHENTICATION_SECRET_LENGTH]; - unsigned char - aClientAuthenticationChallengeResponse[AUTHENTICATION_RESPONSE_LENGTH]; - - if ( bSuccess ) - { - FATAL_ASSERT( AUTHENTICATION_SECRET_LENGTH == - ConvertUTF8HexStringToBinary( - sHexAuthenticationSecret, NULL ) ); - - ConvertUTF8HexStringToBinary( - sHexAuthenticationSecret, aAuthenticationSecret ); - - // client authentication response - bSuccess = ComputeChallengeResponse( - aAuthenticationSecret, - AUTHENTICATION_SECRET_LENGTH, - aRootCACertificate, - iRootCACertificateLength, - stRootCACertificateResponse.ClientAuthenticationChallenge.__ptr, - AUTHENTICATION_CHALLENGE_LENGTH, - aClientAuthenticationChallengeResponse, - AUTHENTICATION_RESPONSE_LENGTH ); - - if ( !bSuccess ) - { - LogError(i_pProfile,AUDIT_CLIENT_COMPUTE_CHALLENGE_RESPONSE_FAILED, - NULL, - NULL, - NULL); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 9\n"); - } -#endif - - struct KMS_Certificate::xsd__hexBinary stClientAuthenticationResponse; - - if ( bSuccess ) - { - stClientAuthenticationResponse.__size = - AUTHENTICATION_RESPONSE_LENGTH; - stClientAuthenticationResponse.__ptr = - (unsigned char*)soap_malloc( - pstCertificateSoap, AUTHENTICATION_RESPONSE_LENGTH ); - - if ( stClientAuthenticationResponse.__ptr != NULL ) - { - memcpy( stClientAuthenticationResponse.__ptr, - aClientAuthenticationChallengeResponse, - AUTHENTICATION_RESPONSE_LENGTH ); - } - else - { - bSuccess = false; - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 10\n"); - } -#endif - - // generate challenge nonce - struct KMS_Certificate::xsd__hexBinary stServerAuthenticationChallenge; - - if ( bSuccess ) - { - stServerAuthenticationChallenge.__size = - AUTHENTICATION_CHALLENGE_LENGTH; - stServerAuthenticationChallenge.__ptr = - (unsigned char*)soap_malloc( pstCertificateSoap, - AUTHENTICATION_CHALLENGE_LENGTH ); - - bSuccess = ( stServerAuthenticationChallenge.__ptr != NULL ); - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 11\n"); - } -#endif - - if ( bSuccess ) - { - bSuccess = GetPseudorandomBytes( - AUTHENTICATION_CHALLENGE_LENGTH, - stServerAuthenticationChallenge.__ptr ); - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 12\n"); - } -#endif - - if ( bSuccess ) - { - sURL = oLoadBalancer.GetHTTPSURL(iIndex, - i_pProfile-> - m_iPortForCertificateService); - - if ( !sURL ) - { - bSuccess = false; - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 13\n"); - } -#endif - - // Verify that the same URL is used for Root CA Certificate - // retrieval as for Entity Certificate retrieval - - if ( bSuccess ) - { - char sTempCAURL[KMS_MAX_URL + 1]; - strncpy( sTempCAURL, i_pProfile->m_sURL, KMS_MAX_URL ); - sTempCAURL[KMS_MAX_URL] = 0; - - char * sRetrieveRootCACertificateURL = strtok( sTempCAURL, ":" ); - - sRetrieveRootCACertificateURL = strtok(NULL, ":"); - - char sTempAgentURL[KMS_MAX_URL + 1]; - strncpy( sTempAgentURL, sURL, KMS_MAX_URL ); - sTempAgentURL[KMS_MAX_URL] = 0; - char * sRetrieveAgentCertificateURL = strtok( sTempAgentURL, ":" ); - sRetrieveAgentCertificateURL = strtok(NULL, ":"); - - FATAL_ASSERT( strcmp( sRetrieveRootCACertificateURL, - sRetrieveAgentCertificateURL ) == 0 ); - - strncpy(i_pProfile->m_sURL, sURL, KMS_MAX_URL); - i_pProfile->m_sURL[KMS_MAX_URL] = 0; - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 14\n"); - } -#endif - - KMS_Certificate::KMS_Certificate__RetrieveEntityCertificateResponse - stRetrieveEntityCertificateResponse; - - // SOAP - retrieve ENTITY Certificate, passing the challenge response, - // a challenge to the server and get back the server's response - if ( bSuccess ) - { - bSuccess = - KMS_Certificate::soap_call_KMS_Certificate__RetrieveEntityCertificate( - pstCertificateSoap, - sURL, - NULL, - (utf8cstr )i_wsEntityID, - stClientAuthenticationResponse, - stServerAuthenticationChallenge, - stRetrieveEntityCertificateResponse ) == SOAP_OK; - - if( !bSuccess ) - { - GetSoapFault(sSoapFaultMsg, (struct soap*)pstCertificateSoap); - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg ); - - bTryFailOver = ServerError(GET_SOAP_FAULTSTRING(pstCertificateSoap), - pstCertificateSoap->errnum); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 15\n"); - } -#endif - - // Validate the response structure - if ( bSuccess ) - { - if ( stRetrieveEntityCertificateResponse. - ServerAuthenticationResponse.__ptr == NULL - - || stRetrieveEntityCertificateResponse. - ServerAuthenticationResponse.__size != - AUTHENTICATION_RESPONSE_LENGTH - - || stRetrieveEntityCertificateResponse.Certificate.__size < 1 - - || stRetrieveEntityCertificateResponse.Certificate.__ptr == 0 - - || stRetrieveEntityCertificateResponse. - WrappedPrivateKeyMaterial.__size < 1 - - || stRetrieveEntityCertificateResponse. - WrappedPrivateKeyMaterial.__ptr == 0 ) - { - bSuccess = false; - - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_INVALID_RESPONSE_FORMAT, - NULL, - sKmaAddress, - NULL ); - } - else - { - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - Log(AUDIT_CLIENT_GET_CERTIFICATE_SUCCESS, - NULL, - sKmaAddress, - NULL ); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 16\n"); - } -#endif - - // if valid, calculate the correct challenge-response - unsigned char - aServerAuthenticationChallengeResponse[AUTHENTICATION_RESPONSE_LENGTH]; - - if ( bSuccess ) - { - bSuccess = ComputeChallengeResponse( - aAuthenticationSecret, - AUTHENTICATION_SECRET_LENGTH, - aRootCACertificate, - iRootCACertificateLength, - stServerAuthenticationChallenge.__ptr, - AUTHENTICATION_CHALLENGE_LENGTH, - aServerAuthenticationChallengeResponse, - AUTHENTICATION_RESPONSE_LENGTH ); - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 17\n"); - } -#endif - - // if successful, check if the server provided the correct challenge-response - if ( bSuccess ) - { - if ( 0 != memcmp( - aServerAuthenticationChallengeResponse, - stRetrieveEntityCertificateResponse.ServerAuthenticationResponse.__ptr, - AUTHENTICATION_RESPONSE_LENGTH ) ) - { - bSuccess = false; - - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_INVALID_CHALLENGE_RESPONSE, - NULL, - sKmaAddress, - NULL ); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 18\n"); - } -#endif - - - if ( bSuccess ) - { - pEntityCertificate = new CCertificate; - // if certificate was obtained - bSuccess = ( pEntityCertificate != 0 ); - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 19\n"); - } -#endif - - if ( bSuccess ) - { - // Load(recall) the signed certificate using OVERLOADED load method - // 3 parameters means load from a buffer - bSuccess = pEntityCertificate->Load( - stRetrieveEntityCertificateResponse.Certificate.__ptr, // load into - stRetrieveEntityCertificateResponse.Certificate.__size, - PKI_FORMAT ); - - if ( !bSuccess ) - { - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_INVALID_CERTIFICATE_FORMAT, - NULL, - sKmaAddress, - NULL ); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 20\n"); - } -#endif - - if ( bSuccess ) - { - pEntityPrivateKey = new CPrivateKey; - bSuccess = ( pEntityPrivateKey != 0 ); - } -#if defined(DEBUG) && defined(METAWARE) - else - { - log_printf("!bSuccess 21\n"); - } -#endif - - - if ( bSuccess ) - { - // Load the Private Key using OVERLOADED Load method - 3 parameters - // means load from a buffer - - // TODO: change this when certificate service supports requesting unwrapped private keys - bSuccess = pEntityPrivateKey->Load( - stRetrieveEntityCertificateResponse.WrappedPrivateKeyMaterial.__ptr, // load into - stRetrieveEntityCertificateResponse.WrappedPrivateKeyMaterial.__size, - NULL, - PKI_FORMAT ); - - if (!bSuccess ) - { - - GetPeerNetworkAddress(sKmaAddress, pstCertificateSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CERTIFICATE_INVALID_KEY_FORMAT, - NULL, - sKmaAddress, - NULL ); - } - } - - if ( bSuccess ) - { - strncpy(i_pProfile->m_wsEntityID, - i_wsEntityID, - KMS_MAX_ENTITY_ID ); - i_pProfile->m_wsEntityID[KMS_MAX_ENTITY_ID] = 0; - - // store PKI certificates and unwrapped private key - bSuccess = StorePKIcerts( i_pProfile, - pRootCACertificate, - pEntityCertificate, - pEntityPrivateKey, -#ifdef KMSUSERPKCS12 - i_wsPassphrase -#else - NULL -#endif - ); -#ifdef KMSUSERPKCS12 - if (bSuccess) { - /* - * Write out the cert and key individually so GetPKIcerts - * can use them. - */ - bSuccess = StoreTempAgentPKI(i_pProfile, - pEntityCertificate, pEntityPrivateKey); - } - -#endif - } - - if ( !bSuccess ) - { - if (pRootCACertificate) - { - delete pRootCACertificate; - } - if (pEntityCertificate) - { - delete pEntityCertificate; - } - if (pEntityPrivateKey) - { - delete pEntityPrivateKey; - } - - i_pProfile->m_iEnrolled = FALSE; - - if ( bTryFailOver ) - { - iIndex = oLoadBalancer.FailOver(iIndex, bFailedOnRetrieveRootCA ? pstCASoap : pstCertificateSoap); - } - } - } - while ( bTryFailOver && (iIndex >= 0) && !bSuccess ); - - // certs are now persisted so free up space - if ( bSuccess ) - { - delete pRootCACertificate; - delete pEntityCertificate; - delete pEntityPrivateKey; - } - - // Clean up SOAP resources for pstCASoap - soap_destroy( pstCASoap ); - soap_end( pstCASoap ); - soap_done( pstCASoap ); - - // Clean up SOAP resources for pstCertificateSoap - soap_destroy( pstCertificateSoap ); - soap_end( pstCertificateSoap ); - soap_done( pstCertificateSoap ); - - free(pstCASoap); - free(pstCertificateSoap); - - return bSuccess; -} - -/*-------------------------------------------------------------------------- - * LoadClusterInformation - * calls GetCluster - that's it. - * If there is no cluster file, this function will return true, - * but o_bClusterInformationFound will be false. - *-------------------------------------------------------------------------*/ -static bool LoadClusterInformation( KMSClientProfile* i_pProfile, - int& o_bClusterInformationFound ) -{ - FATAL_ASSERT( i_pProfile ); - - o_bClusterInformationFound = false; - - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - - return GetCluster( i_pProfile, o_bClusterInformationFound ) ; - -} - - -/*-------------------------------------------------------------------------- - * EnrollAgent - * calls functions to perform enrollment and save PKI info to persistent storage - * stores configuration in persistent storage - *-------------------------------------------------------------------------*/ - -static bool EnrollAgent( KMSClientProfile * io_pProfile, - utf8cstr i_wsEntityID, - utf8cstr i_wsPassphrase ) -{ - FATAL_ASSERT( io_pProfile && i_wsEntityID && i_wsPassphrase ); - - bool bSuccess = true; - - // see KMSAgentCryptoUtilities for HASH_LENGTH, aka KMS_MAX_HASH_SIZE - char sHexHashedPassphrase[2*KMS_MAX_HASH_SIZE+1]; - - if ( bSuccess ) - { - // performs enrollment and saves PKI info to persistent storage - bSuccess = KMSClient_RetrieveEntityCertificate( - io_pProfile, - i_wsEntityID, - i_wsPassphrase, - sHexHashedPassphrase ); - - // KMSClient_RetrieveCertificate logs errors - } - - if (bSuccess) - { - strncpy(io_pProfile->m_sHexHashedPassphrase, - sHexHashedPassphrase, - 2*KMS_MAX_HASH_SIZE ); - io_pProfile->m_sHexHashedPassphrase[2*KMS_MAX_HASH_SIZE] = 0; - - // persist the profile now updated with the hashed passphrase - bSuccess = StoreConfig( io_pProfile ); - - if (!bSuccess) - { - Log(AUDIT_CLIENT_LOAD_PROFILE, - i_wsEntityID, - NULL, - "store config failed following enrollment" ); - } - } - - return bSuccess; -} - -/*--------------------------------------------------------------------------- - * Function: KMSClient_LoadProfile - * - *--------------------------------------------------------------------------*/ -bool KMSClient_LoadProfile( - KMSClientProfile *io_pProfile, - utf8char *i_wsProfileName, - utf8char *i_wsEntityID, - utf8char *i_wsPassphrase, - utf8char *i_wsApplianceAddress, - int i_iTransactionTimeout, - int i_iFailOverLimit, - int i_iClusterDiscoveryFrequency, - int i_eKMSmode) -{ - FATAL_ASSERT(io_pProfile); - FATAL_ASSERT(i_wsProfileName); - - bool bSuccess = true; - - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_LoadProfile : entered"); -#endif - - memset( io_pProfile, 0, sizeof(KMSClientProfile) ); - - // create lock - - if (bSuccess) - { - bSuccess = - ( K_CreateMutex((K_MUTEX_HANDLE *)&io_pProfile->m_pLock) == - K_SYS_OK ); - } - - // initialize profile with parameters - - strncpy(io_pProfile->m_wsProfileName, - i_wsProfileName, - KMS_MAX_ENTITY_ID); - io_pProfile->m_wsProfileName[KMS_MAX_ENTITY_ID] = 0; - - io_pProfile->m_iPortForCAService = - DEFAULT_CA_SERVICE_PORT_NUMBER; - io_pProfile->m_iPortForCertificateService = - DEFAULT_CERTIFICATE_SERVICE_PORT_NUMBER; - io_pProfile->m_iPortForDiscoveryService = - DEFAULT_DISCOVERY_SERVICE_PORT_NUMBER; - io_pProfile->m_iPortForAgentService = - DEFAULT_AGENT_SERVICE_PORT_NUMBER; - strncpy(io_pProfile->m_wsApplianceAddress, - i_wsApplianceAddress, - KMS_MAX_NETWORK_ADDRESS); - io_pProfile->m_wsApplianceAddress[KMS_MAX_NETWORK_ADDRESS] = 0; - io_pProfile->m_iClusterDiscoveryFrequency = i_iClusterDiscoveryFrequency; - io_pProfile->m_iTransactionTimeout = i_iTransactionTimeout; - io_pProfile->m_iFailoverLimit = i_iFailOverLimit; - io_pProfile->m_eKMSmode = i_eKMSmode; - - // if the file isn't found, create a new one - bool bProfileExists = ProfileExists( g_wsWorkingDirectory, /* pass in default */ - io_pProfile->m_wsProfileName ); - -#ifdef KMSUSERPKCS12 - /* - * Fix logic for determining if this request is for enrollment. - * Look to see if the server cert and clientkey.p12 file exist. - * We always expect a password for Solaris which is used to - * validate that the user has access to the clientkey data by - * attempting to use it to open the PKCS12 file. - */ - bool bEnrolling = !ClientKeyP12Exists(io_pProfile->m_wsProfileName); -#else - bool bEnrolling = i_wsEntityID && i_wsPassphrase; -#endif - - if ( bSuccess && !bEnrolling && !bProfileExists ) - { - // when not enrolling a profile must exist - bSuccess = false; - Log(AUDIT_CLIENT_LOAD_PROFILE, - i_wsProfileName, - NULL, - "Enrollment attempted but profile could not be found" ); - } - - // if the file isn't found, create a new one - if ( bSuccess && !bProfileExists ) - { - strncpy(io_pProfile->m_wsEntityID, - i_wsEntityID, - KMS_MAX_ENTITY_ID ); - io_pProfile->m_wsEntityID[KMS_MAX_ENTITY_ID] = 0; - bSuccess = CreateProfile( io_pProfile, - g_wsWorkingDirectory, - io_pProfile->m_wsProfileName ); - } - - // load profile.cfg file - if ( bSuccess ) - { - bSuccess = GetConfig( io_pProfile ); - - } - - // if profile settings changed then update the profile storage - if ( bSuccess && - ( strncmp(io_pProfile->m_wsApplianceAddress, - i_wsApplianceAddress, KMS_MAX_NETWORK_ADDRESS ) != 0 || - io_pProfile->m_iClusterDiscoveryFrequency != i_iClusterDiscoveryFrequency || - io_pProfile->m_iTransactionTimeout != i_iTransactionTimeout || - io_pProfile->m_iFailoverLimit != i_iFailOverLimit - )) - { - strncpy(io_pProfile->m_wsApplianceAddress, - i_wsApplianceAddress, - KMS_MAX_NETWORK_ADDRESS); - io_pProfile->m_wsApplianceAddress[KMS_MAX_NETWORK_ADDRESS] = 0; - io_pProfile->m_iClusterDiscoveryFrequency = i_iClusterDiscoveryFrequency; - io_pProfile->m_iTransactionTimeout = i_iTransactionTimeout; - io_pProfile->m_iFailoverLimit = i_iFailOverLimit; - - bSuccess = StoreConfig( io_pProfile ); - } - - // get PKI info from prior enrollment - if ( bSuccess && !bEnrolling ) - { -#ifdef KMSUSERPKCS12 - /* - * Decrypt the PKCS12 file with the client cert and key using - * the given password. If it fails, then return an auth failure - * status. If success, write the client cert and key to the client file - * so it can be used later by the SOAP SSL functions. - */ - CCertificate* pEntityCertificate = new CCertificate;; - CPrivateKey* pEntityPrivateKey = new CPrivateKey; - bSuccess = GetPKCS12CertAndKey(io_pProfile, - i_wsPassphrase, - pEntityCertificate, - pEntityPrivateKey); - if (!bSuccess) { - Log(AUDIT_CLIENT_LOAD_PROFILE, - i_wsProfileName, - NULL, - "Enrollment Certificate and Private Key "\ - "were not loaded from PKCS12" ); - } else { - /* - * Write out the cert and key individually so GetPKIcerts - * can use them. - */ - bSuccess = StoreTempAgentPKI(io_pProfile, - pEntityCertificate, pEntityPrivateKey); - if (!bSuccess) { - Log(AUDIT_CLIENT_LOAD_PROFILE, - i_wsProfileName, - NULL, - "Enrollment Certificate and Private Key "\ - "were not stored to file." ); - } - } - delete pEntityCertificate; - delete pEntityPrivateKey; - -#endif - if (bSuccess) - bSuccess = GetPKIcerts( io_pProfile ); - } - - // if not enrolling then previously enrolled PKI info should now be initialized - if ( bSuccess && !bEnrolling && - (!io_pProfile->m_sHexHashedPassphrase || - !io_pProfile->m_iEnrolled )) - { - bSuccess = false; - Log(AUDIT_CLIENT_LOAD_PROFILE, - i_wsProfileName, - NULL, - "Enrollment Certificates and Private Key were not loaded from profile" ); - } - - io_pProfile->m_bIsClusterDiscoveryCalled = false; - - // allocate main soap struct - struct soap* pstSoap = 0; - - if ( bSuccess ) - { - pstSoap = (struct soap*)malloc( sizeof(struct soap) ); - - io_pProfile->m_pvSoap = pstSoap; - - bSuccess = ( pstSoap != NULL ); - - if ( bSuccess ) - { - soap_init2( pstSoap, - (SOAP_XML_STRICT | SOAP_C_UTFSTRING ), - (SOAP_XML_STRICT | SOAP_C_UTFSTRING) ); - -#ifdef METAWARE - K_SetupCallbacks ( pstSoap ); -#endif - - soap_set_namespaces( pstSoap, KMS_Agent_namespaces ); - - pstSoap->connect_timeout = io_pProfile->m_iTransactionTimeout; - pstSoap->send_timeout = io_pProfile->m_iTransactionTimeout; - pstSoap->recv_timeout = io_pProfile->m_iTransactionTimeout; - } - else - { -#if defined(DEBUG) && defined(METAWARE) - log_printf("Malloc %x pstSoap returned null\n", - sizeof(struct soap)); -#endif - - } - } - - // delete the existing cluster config if the input IP address - // does not match one already known to the cluster config - - // Note that KMSClientProfile may be too large to fit on the stack, so we're - // going to put it on the heap. - - KMSClientProfile* pstTempProfile = 0; - bool bFound = false; - int i; - - if ( bSuccess ) - { - pstTempProfile = (KMSClientProfile*)malloc( sizeof(KMSClientProfile) ); - bSuccess = (pstTempProfile != 0); -#if defined(METAWARE) - if (!bSuccess) - log_printf("Malloc %x pstTempProfile returned null\n", - sizeof(KMSClientProfile)); -#endif - - } - - int bClusterInformationFound = false; - - if ( bSuccess ) - { - memcpy( pstTempProfile, io_pProfile, sizeof(KMSClientProfile) ); - - bSuccess = LoadClusterInformation( pstTempProfile, bClusterInformationFound ); - } - - // got cluster info from persistent storage - if ( bSuccess && bClusterInformationFound ) - { - // see if address is a member of the remembered cluster or is a - // new kma, meaning this KMA joins the cluster as the - // discovery KMA. - for ( i = 0; i < pstTempProfile->m_iClusterNum; i++ ) - { - bFound = (strncmp( pstTempProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - io_pProfile->m_wsApplianceAddress, - KMS_MAX_NETWORK_ADDRESS) == 0); - - if ( bFound ) - { - break; - } -#if defined(DEBUG) && defined(METAWARE) - else - log_printf ("KMSClient_LoadProfile : Appliance Address doesn't match"); -#endif - } - - if ( !bFound ) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf ("KMSClient_LoadProfile : delete cluster"); -#endif - DeleteCluster( pstTempProfile ); - char msg[256]; - K_snprintf(msg, 256, - "KMSClientProfile.LoadProfile(): deleting previous cluster config, %s not found\n", - io_pProfile->m_wsApplianceAddress); - Log(AUDIT_CLIENT_LOAD_PROFILE, - i_wsProfileName, - NULL, - msg ); - DeleteCluster( pstTempProfile ); - } - else - { - // since address is a member of the persisted cluster copy the persisted cluster info to the profile - io_pProfile->m_iClusterNum = pstTempProfile->m_iClusterNum; - memcpy(io_pProfile->m_aCluster, - pstTempProfile->m_aCluster, - sizeof(KMSClusterEntry)*io_pProfile->m_iClusterNum); - } - } -#if defined(DEBUG) && defined(METAWARE) - else - log_printf ("KMSClient_LoadProfile : no persisted cluster information"); -#endif - - if ( pstTempProfile ) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf ("KMSClient_LoadProfile : free the temporary profile"); -#endif - free( pstTempProfile ); - pstTempProfile = 0; - } - - if ( bSuccess && !io_pProfile->m_iEnrolled ) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf ("KMSClient_LoadProfile : call EnrollAgent"); -#endif - // enroll the agent - bSuccess = EnrollAgent( io_pProfile, - i_wsEntityID, - i_wsPassphrase ); - } -#if defined(DEBUG) && defined(METAWARE) - else if (io_pProfile->m_iEnrolled) - log_printf ("KMSClient_LoadProfile : Already Enrolled"); -#endif - - - - if (bSuccess) - { - // Initialize SSL - use CLIENT AUTH - // CLIENT_AUTHENTICATION needs the pstSoap, and expects - // the profile io_pProfile to be full (have the other certificates - // and keypair) - - if ( bSuccess ) - { - bSuccess = - K_soap_ssl_client_context( - io_pProfile, // in/out - pstSoap, // out - SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION // in - flags - ) == SOAP_OK; - - if ( !bSuccess ) - { -#if defined(DEBUG) && defined(METAWARE) - if (!bSuccess) - log_printf ("KMSClient_LoadProfile : K_soap_ssl_client_context failed"); -#endif - GetSoapFault(sSoapFaultMsg, (struct soap*)pstSoap); - GetPeerNetworkAddress(sKmaAddress, pstSoap); - - LogError(io_pProfile, - AUDIT_CLIENT_LOAD_PROFILE_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg ); - } - } - - // discover the cluster - - if ( bSuccess && - io_pProfile->m_iClusterDiscoveryFrequency > 0 ) - { - bSuccess = ( KMSClient_GetClusterInformation( - io_pProfile, - io_pProfile->m_wsEntitySiteID, - sizeof(io_pProfile->m_wsEntitySiteID), - &(io_pProfile->m_iClusterNum), - io_pProfile->m_aCluster, - KMS_MAX_CLUSTER_NUM) != 0 ); - // KMSClient_GetClusterInformation logs errors - - if (bSuccess && i_eKMSmode == FIPS_MODE) - { - bSuccess = !KMSClient_NoFIPSCompatibleKMAs(io_pProfile); - if (!bSuccess) - { - LogError(io_pProfile, - AUDIT_CLIENT_AGENT_LOAD_PROFILE_NO_FIPS_COMPATIBLE_KMAS_AVAILABLE, - NULL, - NULL, - NULL ); - } - } - } -#if defined(DEBUG) && defined(METAWARE) - if (!bSuccess) - log_printf ("KMSClient_LoadProfile : getClusterInformation failed"); -#endif - -#ifdef KMSUSERPKCS12 - /* - * Once the SSL context is established, delete the - * private key file. - */ - (void) CleanupPrivateKeyFile(io_pProfile); -#endif - } -#if defined(DEBUG) && defined(METAWARE) - else if (!bSuccess) - log_printf ("KMSClient_LoadProfile : EnrollAgent failed"); -#endif - - CAgentLoadBalancer *pAgentLoadBalancer = new CAgentLoadBalancer(io_pProfile); - if(pAgentLoadBalancer == NULL) - { - bSuccess = false; - } - -#if defined(DEBUG) && defined(METAWARE) - if (!bSuccess) - log_printf ("KMSClient_LoadProfile : new CAgentLoadBalancer failed"); -#endif - - io_pProfile->m_pAgentLoadBalancer = pAgentLoadBalancer; - - // create a data unit server affinity cache for Agents - - if ( bSuccess ) - { - io_pProfile->m_pDataUnitCache = new CDataUnitCache(); - - bSuccess = ( io_pProfile->m_pDataUnitCache != NULL ); - } - - if ( bSuccess ) - { -#if defined(DEBUG) && defined(METAWARE) - log_printf ("KMSClient_LoadProfile : set version to KMS_AGENT_VERSION = %x", - KMS_AGENT_VERSION); - log_printf ("KMSClient_LoadProfile : profile is: %x\n", io_pProfile); -#endif - // this is checked later by ProfileLoaded and is taken - // to indicate that the profile was correctly loaded - io_pProfile->m_iVersion = KMS_AGENT_VERSION; - } - - if( !bSuccess ) - { - K_DestroyMutex((K_MUTEX_HANDLE)io_pProfile->m_pLock); - io_pProfile->m_pLock = 0; - - if ( io_pProfile->m_pvSoap ) - { - soap_destroy( (struct soap*)io_pProfile->m_pvSoap ); - soap_end( (struct soap*)io_pProfile->m_pvSoap ); - soap_done( (struct soap*)io_pProfile->m_pvSoap ); - - free( (struct soap*)io_pProfile->m_pvSoap ); - io_pProfile->m_pvSoap = 0; - - if( io_pProfile->m_pAgentLoadBalancer != NULL) - { - delete(reinterpret_cast (io_pProfile->m_pAgentLoadBalancer)); - } - - if( io_pProfile->m_pDataUnitCache != NULL) - { - delete(reinterpret_cast (io_pProfile->m_pDataUnitCache)); - } - - } -#if defined(DEBUG) && defined(METAWARE) - log_printf ("KMSClient_LoadProfile : failed - returning"); -#endif - } - - return bSuccess; -} - -/** - * compare cluster entries having equivalent KMA names (aka Appliance alias) and - * return true if equal. Note: KMANetworkAddress comparison is handled separately - * due to IPv4/IPv6 - */ -static bool EqualClusterEntry( - struct KMS_Discovery::KMS_Discovery_ClusterMember const *i_pLeft, - KMSClusterEntry const *i_pRight) -{ - bool bEnabled = i_pRight->m_iEnabled ? true : false; - if ( i_pLeft->Enabled != bEnabled ) - { - return false; - } - if ( i_pLeft->KMAID != i_pRight->m_lApplianceID ) - { - return false; - } - if ( strncmp(i_pLeft->KMASiteID, - i_pRight->m_wsApplianceSiteID, - KMS_MAX_ENTITY_SITE_ID) != 0 ) - { - return false; - } - // Note: we now minimize persistence of cluster changes by not saving - // whenever m_iResponding changes - - return true; -} -/** - * @return true if the current address matches the provided IPv6Address - * when the i_bUseIPv6 arg is true, otherwise compare the current address - * with the IPv4Address. If i_bUseIPv6 then i_pCurrentAddress must be - * enclosed in brackets, i.e. as in RFC 2396. - */ -static bool EqualKMANetworkAddress ( - bool i_bUseIPv6, - const char * const i_pIPv6Address, - const char * const i_pIPv4Address, - const char * const i_pCurrentAddress - ) -{ - bool bEqualAddress = true; - - if ( i_pCurrentAddress == NULL ) - { - return false; - } - - if (i_bUseIPv6) - { - if ( i_pIPv6Address == NULL ) - { - return false; - } - char sIPv6Address[KMS_MAX_NETWORK_ADDRESS] = "["; - - strcat(sIPv6Address, i_pIPv6Address); - - char * pLoc = strchr(sIPv6Address, '/'); - - if ( pLoc != NULL ) - { - // remove prefix from address - *pLoc = '\0'; - } - strcat(sIPv6Address, "]"); - bEqualAddress = strncmp(sIPv6Address, i_pCurrentAddress, KMS_MAX_NETWORK_ADDRESS) == 0; - } - else - { - if ( i_pIPv4Address == NULL ) - { - return false; - } - bEqualAddress = strncmp(i_pIPv4Address, i_pCurrentAddress, KMS_MAX_NETWORK_ADDRESS) == 0; - } - - return bEqualAddress; -} - -/** - * compares the profile's current cluster state with the filtered discover - * cluster response and returns true if the repsonse - * differs from i_pProfile->m_aCluster. A cluster has changed if the state of any - * cluster node has changed or if the set of cluster nodes has changed. - * The order of nodes is immaterial. - */ -static bool ClusterConfigChanged ( - KMSClientProfile const *i_pProfile, - char * const i_sResponseEntitySiteID, - struct KMS_Discovery::KMS_Discovery__ArrayOfClusterMembers const *i_pFilteredCluster) -{ - int i, j; - - FATAL_ASSERT(i_pProfile); - FATAL_ASSERT(i_pFilteredCluster); - - // cardinality check - if (i_pProfile->m_iClusterNum != - i_pFilteredCluster->__size) - { - return true; - } - - // check if the agent's site ID changed - if (strncmp(i_pProfile->m_wsEntitySiteID, - i_sResponseEntitySiteID, KMS_MAX_ENTITY_SITE_ID) != 0) - { - return true; - } - - // for all KMAs in filtered response check if they exist unchanged in the profile - for (i = 0; i < i_pFilteredCluster->__size; i++) - { - bool bFound = false; - for (j = 0; j < i_pProfile->m_iClusterNum; j++) - { - if (strncmp(i_pFilteredCluster->__ptr[i].KMAName, - i_pProfile->m_aCluster[j].m_wsApplianceAlias, - KMS_MAX_ENTITY_ID) == 0) - { - bFound = true; - if ( - !EqualKMANetworkAddress( - strchr(i_pProfile->m_wsApplianceAddress, ':') ? true : false, - i_pFilteredCluster->__ptr[i].KMANetworkAddressIPv6, - i_pFilteredCluster->__ptr[i].KMANetworkAddress, - i_pProfile->m_aCluster[j].m_wsApplianceNetworkAddress) || - !EqualClusterEntry((i_pFilteredCluster->__ptr + i), - &i_pProfile->m_aCluster[j])) - - { - return true; - } - } - } - if ( !bFound ) - { - return true; - } - } - return false; -} - -/** - * returns true if the string is a valid IPv6 address syntactically - */ -static bool ValidIPv6KMAaddress( const char * const i_pIPAddress ) -{ - FATAL_ASSERT( i_pIPAddress ); - - if ( strlen(i_pIPAddress) <= 0 ) - { - return false; - } - - // simple check - if ( strchr( i_pIPAddress, ':')) - { - return true; - } - - return false; -} -/** - * - */ -static void FreeFilteredCluster ( - struct KMS_Discovery::KMS_Discovery__ArrayOfClusterMembers * const io_stFilteredCluster, - int iLimit ) -{ - int j = 0; - for (; j < iLimit; j++ ) - { - free( io_stFilteredCluster->__ptr[j].KMAName ); - free( io_stFilteredCluster->__ptr[j].KMASiteID ); - free( io_stFilteredCluster->__ptr[j].KMAHostName ); - free( io_stFilteredCluster->__ptr[j].KMANetworkAddress ); - free( io_stFilteredCluster->__ptr[j].KMAVersion ); - free( io_stFilteredCluster->__ptr[j].KMAHostNameIPv6 ); - free( io_stFilteredCluster->__ptr[j].KMANetworkAddressIPv6 ); - } - - free( io_stFilteredCluster->__ptr ); -} - -/** - * filters the discover cluster response to be less than or equal to KMS_MAX_CLUSTER_NUM KMAs. The heuristic used to filter - * the response is the same as used by CAgentLoadBalancer::KMSClient_SortClusterArray(), FIPS compatibility, then within site, - * then responding and enabled KMAs. - * @param i_stResponse pointer to gsoap discover cluster service response - * @param io_stFilteredCluster pointer to gsoap discover cluster array to be populated with the filtered list of KMAs - * @return true on success and io_stFilteredCluster->__size less than or equal to KMS_MAX_CLUSTER_NUM, - * otherwise io_stFilteredCluster is undefined. io_stFilteredCluster->__ptr is populated with the array of elements - * malloc'd. - */ -static bool FilterCluster (struct KMS_Discovery::KMS_Discovery__DiscoverClusterResponse * const i_stResponse, - bool i_bFIPS, - struct KMS_Discovery::KMS_Discovery__ArrayOfClusterMembers * const io_stFilteredCluster) -{ - /* - * do something like KMSAgentLoadBalancer:SortClusterArray() to the stResponse array - * return 1st KMS_MAX_CLUSTER_NUM entries and free the rest. - */ - - FATAL_ASSERT(i_stResponse); - FATAL_ASSERT(io_stFilteredCluster); - - io_stFilteredCluster->__size = i_stResponse->ArrayOfClusterMembers.__size; - io_stFilteredCluster->__ptr = reinterpret_cast < struct KMS_Discovery::KMS_Discovery_ClusterMember * > - ( calloc( io_stFilteredCluster->__size, - sizeof (struct KMS_Discovery::KMS_Discovery_ClusterMember ) ) ); - - if (io_stFilteredCluster->__ptr == NULL) - { - Log(AUDIT_CLIENT_FILTER_CLUSTER_FAILED, - NULL, - NULL, - "calloc failed"); - return false; - } - - if (io_stFilteredCluster->__size <= 0) - { - Log(AUDIT_CLIENT_FILTER_CLUSTER_FAILED, - NULL, - NULL, - "returned cluster size is not positive"); - return false; - } - - // copy response cluster members - for (int i = 0; i < io_stFilteredCluster->__size; i++) - { - bool bSuccess = true; - - size_t iKMANameSize = 0, iKMASiteIDSize = 0, iKMAHostNameSize = 0, - iKMANetworkAddressSize = 0, iKMAVersionSize = 0, iKMAHostNameIPv6Size = 0, - iKMANetworkAddressIPv6Size = 0; - - // allocate storage for the various struct member's arrays - iKMANameSize = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAName)+1; - io_stFilteredCluster->__ptr[i].KMAName = reinterpret_cast (malloc(iKMANameSize)); - - iKMASiteIDSize = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMASiteID)+1; - io_stFilteredCluster->__ptr[i].KMASiteID = reinterpret_cast (malloc(iKMASiteIDSize)); - - iKMAHostNameSize = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAHostName)+1; - io_stFilteredCluster->__ptr[i].KMAHostName = reinterpret_cast (malloc(iKMAHostNameSize)); - - iKMANetworkAddressSize = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMANetworkAddress)+1; - io_stFilteredCluster->__ptr[i].KMANetworkAddress = reinterpret_cast (malloc(iKMANetworkAddressSize)); - - // KMAVersion is an optional field derived from an xml attribute in the soap interface that will not be present in 2.0 KMAs - if (i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAVersion) - { - iKMAVersionSize = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAVersion)+1; - io_stFilteredCluster->__ptr[i].KMAVersion = reinterpret_cast (malloc(iKMAVersionSize)); - if (io_stFilteredCluster->__ptr[i].KMAVersion == NULL) - { - bSuccess = false; - } - } - else - { - io_stFilteredCluster->__ptr[i].KMAVersion = NULL; - } - - // KMAHostNameIPv6 is an optional field derived from an xml attribute in the soap interface that will not be present in 2.0 KMAs - if (i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAHostNameIPv6) - { - iKMAHostNameIPv6Size = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAHostNameIPv6)+1; - io_stFilteredCluster->__ptr[i].KMAHostNameIPv6 = reinterpret_cast (malloc(iKMAHostNameIPv6Size)); - if ( io_stFilteredCluster->__ptr[i].KMAHostNameIPv6 == NULL ) - { - bSuccess = false; - } - } - else - { - io_stFilteredCluster->__ptr[i].KMAHostNameIPv6 = NULL; - } - - // KMANetworkAddressIPv6 is an optional field derived from an xml attribute in the soap interface that will not be present in 2.0 KMAs - if (i_stResponse->ArrayOfClusterMembers.__ptr[i].KMANetworkAddressIPv6) - { - iKMANetworkAddressIPv6Size = strlen(i_stResponse->ArrayOfClusterMembers.__ptr[i].KMANetworkAddressIPv6)+1; - io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6 = reinterpret_cast (malloc(iKMANetworkAddressIPv6Size)); - if ( io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6 == NULL ) - { - bSuccess = false; - } - } - else - { - io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6 = NULL; - } - - if ( io_stFilteredCluster->__ptr[i].KMAName == NULL || - io_stFilteredCluster->__ptr[i].KMASiteID == NULL || - io_stFilteredCluster->__ptr[i].KMAHostName == NULL || - io_stFilteredCluster->__ptr[i].KMANetworkAddress == NULL || - !bSuccess ) - { - // cleanup and return - FreeFilteredCluster( io_stFilteredCluster, i+1 ); - Log( AUDIT_CLIENT_FILTER_CLUSTER_FAILED, - NULL, - NULL, - "malloc failed" ); - return false; - } - - strncpy(io_stFilteredCluster->__ptr[i].KMAName, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAName, - iKMANameSize); - io_stFilteredCluster->__ptr[i].KMAName[iKMANameSize-1] = '\0'; - - strncpy(io_stFilteredCluster->__ptr[i].KMASiteID, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMASiteID, - iKMASiteIDSize); - io_stFilteredCluster->__ptr[i].KMASiteID[iKMASiteIDSize-1] = '\0'; - - strncpy(io_stFilteredCluster->__ptr[i].KMAHostName, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAHostName, - iKMAHostNameSize); - io_stFilteredCluster->__ptr[i].KMAHostName[iKMAHostNameSize-1] = '\0'; - - strncpy(io_stFilteredCluster->__ptr[i].KMANetworkAddress, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMANetworkAddress, - iKMANetworkAddressSize); - io_stFilteredCluster->__ptr[i].KMANetworkAddress[iKMANetworkAddressSize-1] = '\0'; - - if ( io_stFilteredCluster->__ptr[i].KMAVersion ) - { - strncpy( io_stFilteredCluster->__ptr[i].KMAVersion, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAVersion, - iKMAVersionSize ); - io_stFilteredCluster->__ptr[i].KMAVersion[iKMAVersionSize-1] = '\0'; - } - - if (io_stFilteredCluster->__ptr[i].KMAHostNameIPv6) - { - strncpy(io_stFilteredCluster->__ptr[i].KMAHostNameIPv6, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAHostNameIPv6, - iKMAHostNameIPv6Size); - io_stFilteredCluster->__ptr[i].KMAHostNameIPv6[iKMAHostNameIPv6Size-1] = '\0'; - } - - if ( io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6 ) - { - strncpy( io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6, - i_stResponse->ArrayOfClusterMembers.__ptr[i].KMANetworkAddressIPv6, - iKMANetworkAddressIPv6Size ); - io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6[iKMANetworkAddressIPv6Size-1] = '\0'; - } - - io_stFilteredCluster->__ptr[i].KMAID = i_stResponse->ArrayOfClusterMembers.__ptr[i].KMAID; - io_stFilteredCluster->__ptr[i].Enabled = i_stResponse->ArrayOfClusterMembers.__ptr[i].Enabled; - io_stFilteredCluster->__ptr[i].KMS_Discovery__Locked = i_stResponse->ArrayOfClusterMembers.__ptr[i].KMS_Discovery__Locked; - - // set load to zero, KMA with version <= Build600 don't initialize - // the load field from the service network - if ( ( io_stFilteredCluster->__ptr[i].KMAVersion && - strcmp( io_stFilteredCluster->__ptr[i].KMAVersion, "Build600" ) <= 0 ) || - io_stFilteredCluster->__ptr[i].KMAVersion == NULL ) - { - io_stFilteredCluster->__ptr[i].Load = 0; - } - else - { - io_stFilteredCluster->__ptr[i].Load = i_stResponse->ArrayOfClusterMembers.__ptr[i].Load; - } - - io_stFilteredCluster->__ptr[i].Responding = i_stResponse->ArrayOfClusterMembers.__ptr[i].Responding; - - if (!bSuccess) - { - FreeFilteredCluster( io_stFilteredCluster, i ); - Log(AUDIT_CLIENT_FILTER_CLUSTER_FAILED, - NULL, - NULL, - "cluster member copy failed"); - return false; - } - } - - // is filtering necessary? - if (io_stFilteredCluster->__size <= KMS_MAX_CLUSTER_NUM) - { - // no filtering required - return true; - } - else - { - char sMesg[100]; - K_snprintf(sMesg, sizeof (sMesg), "DiscoverCluster returned %d KMAs, filtering to %d ...", io_stFilteredCluster->__size, KMS_MAX_CLUSTER_NUM); - Log(AUDIT_CLIENT_FILTER_CLUSTER, - NULL, - NULL, - sMesg); - - } - - // adjust loads according to availability, site and FIPS compatibility - { - int i = 0; - for (; i < io_stFilteredCluster->__size; i++) - { - if (io_stFilteredCluster->__ptr[i].Enabled == false - || io_stFilteredCluster->__ptr[i].Responding == false - || io_stFilteredCluster->__ptr[i].KMS_Discovery__Locked == true) - { - io_stFilteredCluster->__ptr[i].Load += 0x40; - } - - if (strcmp(io_stFilteredCluster->__ptr[i].KMASiteID, - i_stResponse->EntitySiteID) != 0) - { - io_stFilteredCluster->__ptr[i].Load += 0x20; - - } - - if ( i_bFIPS && - !FIPScompatibleKMA(io_stFilteredCluster->__ptr[i].KMAVersion)) - { - io_stFilteredCluster->__ptr[i].Load += 0x80; - } - } - } - - // sort ascending by load - - // gnome sort: the simplest sort algoritm - { - int i = 0; - while (i < io_stFilteredCluster->__size) - { - if (i == 0 || io_stFilteredCluster->__ptr[i - 1].Load <= io_stFilteredCluster->__ptr[i].Load) - { - i++; - } - else - { - struct KMS_Discovery::KMS_Discovery_ClusterMember tmp = io_stFilteredCluster->__ptr[i]; - io_stFilteredCluster->__ptr[i] = io_stFilteredCluster->__ptr[i - 1]; - io_stFilteredCluster->__ptr[--i] = tmp; - } - } - } - - // now filter the list, freeing memory allocated for copied elements that are not being retained - { - int i=KMS_MAX_CLUSTER_NUM; - for (; i < io_stFilteredCluster->__size; i++) - { - free(io_stFilteredCluster->__ptr[i].KMAName); - free(io_stFilteredCluster->__ptr[i].KMASiteID); - free(io_stFilteredCluster->__ptr[i].KMAHostName); - free(io_stFilteredCluster->__ptr[i].KMANetworkAddress); - free(io_stFilteredCluster->__ptr[i].KMAVersion); - free(io_stFilteredCluster->__ptr[i].KMAHostNameIPv6); - free(io_stFilteredCluster->__ptr[i].KMANetworkAddressIPv6); - } - } - - io_stFilteredCluster->__size = KMS_MAX_CLUSTER_NUM; - - Log(AUDIT_CLIENT_FILTER_CLUSTER, - NULL, - NULL, - "success"); - - return true; -}; - -/*--------------------------------------------------------------------------- - * Function: KMSClient_GetClusterInformation - * - *--------------------------------------------------------------------------*/ -bool KMSClient_GetClusterInformation( - KMSClientProfile *i_pProfile, - utf8char *o_wsEntitySiteID, - int i_iEntitySiteIDSize, - int *o_pApplianceNum, - KMSClusterEntry *o_pClusterEntryArray, - int i_iClusterEntryArraySize) -{ - FATAL_ASSERT(i_pProfile); - FATAL_ASSERT( o_wsEntitySiteID ); - FATAL_ASSERT( o_pApplianceNum ); - FATAL_ASSERT( o_pClusterEntryArray ); - FATAL_ASSERT( i_iEntitySiteIDSize <= KMS_MAX_ENTITY_ID+1 ); - - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - - bool bSuccess = true; - char sSoapFaultMsg[g_iMAX_SOAP_FAULT_MESSAGE_LENGTH]; - char sKmaAddress[g_iMAX_PEER_NETWORK_ADDRESS_LENGTH]; - - char sURL[KMS_MAX_URL+1]; - - // set URL from the initial appliance address - utf8cstr sApplianceAddress = i_pProfile->m_wsApplianceAddress; - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_GetClusterInformation : entered"); -#endif - - K_snprintf(sURL, - KMS_MAX_URL, - "https://%s:%d", - sApplianceAddress, - i_pProfile->m_iPortForDiscoveryService); - strncpy(i_pProfile->m_sURL, sURL, KMS_MAX_URL); - i_pProfile->m_sURL[KMS_MAX_URL] = 0; - - // allocate and initialize a new soap env for the cluster discovery call - struct soap *pstSoap = (struct soap*)i_pProfile->m_pvDiscoverySoap; - - if ( !i_pProfile->m_iEnrolled ) - { - bSuccess = false; - } - - if ( bSuccess ) - { - // allocate discovery soap runtime - if (pstSoap == NULL ) - { - pstSoap = soap_new(); - i_pProfile->m_pvDiscoverySoap = pstSoap; - /* soap_copy results in a segfault in sk_free() within libcrytpo.so - pstSoap = soap_copy( (soap*)i_pProfile->m_pvSoap ); - */ - if (pstSoap == NULL) - { - bSuccess = false; - } - else - { - pstSoap->connect_timeout = i_pProfile->m_iTransactionTimeout; - pstSoap->send_timeout = i_pProfile->m_iTransactionTimeout; - pstSoap->recv_timeout = i_pProfile->m_iTransactionTimeout; - - soap_set_imode( pstSoap, (SOAP_XML_STRICT | SOAP_C_UTFSTRING) ); - soap_set_omode( pstSoap, (SOAP_XML_STRICT | SOAP_C_UTFSTRING) ); - - soap_set_namespaces( pstSoap, KMS_Discovery_namespaces ); - bSuccess = K_soap_ssl_client_context( - i_pProfile, - pstSoap, - SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION - ) == SOAP_OK; - if ( !bSuccess ) - { - Log(AUDIT_CLIENT_GetClusterInformation, - NULL, - NULL, - "K_soap_ssl_client_context failed"); - soap_destroy(pstSoap); - soap_end(pstSoap); - soap_done(pstSoap); - } - } - } - } - - // Discovery - struct KMS_Discovery::KMS_Discovery__DiscoverClusterResponse stResponse; - -#if defined(DEBUG) && defined(METAWARE) - log_printf("KMSClient_GetClusterInformation : call KMS_Discovery_DiscoverCluster"); -#endif - - // SOAP - discover cluster - if ( bSuccess ) - { -#ifdef DEBUG - int iStartTickCount = K_GetTickCount(); - int iEndTickCount; - char sDiscoverTimeMsg[100]; -#endif - bSuccess = - KMS_Discovery::soap_call_KMS_Discovery__DiscoverCluster( - pstSoap, - sURL, - NULL, - NULL, - stResponse ) == SOAP_OK; -#ifdef DEBUG - iEndTickCount = K_GetTickCount(); - sprintf(sDiscoverTimeMsg, "DiscoverCluster soapcall elapsed time=%u ms", - iEndTickCount-iStartTickCount); - Log(AUDIT_CLIENT_GetClusterInformation, - NULL, - sApplianceAddress, - sDiscoverTimeMsg); -#endif - - if ( !bSuccess ) - { - GetSoapFault(sSoapFaultMsg, (struct soap*)pstSoap); - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CLUSTER_INFORMATION_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg ); - - if ( !ServerError( sSoapFaultMsg, pstSoap->errnum ) ) - { - // do not failover if error is client related - soap_destroy( pstSoap ); - soap_end( pstSoap ); - soap_free( pstSoap ); - return false; - } - } - - // If we did not succeed to Discover from the initial appliance, - // try to discover from other appliances that we know about that are enabled. - // Disabled Appliances are not attempted because they may have a stale view - // of the cluster. In particular, they themselves are not aware that they - // are disabled. - - if ( !bSuccess && i_pProfile->m_iClusterNum > 0 ) - { - // Copy the profile's cluster array so that we don't have to lock the - // profile around a SOAP call - - int j = 0; - int iClusterNum = 0; - KMSClusterEntry* aCluster = - (KMSClusterEntry*)malloc(sizeof(KMSClusterEntry) * KMS_MAX_CLUSTER_NUM); - - bSuccess = ( aCluster != 0 ); -#if defined(DEBUG) && defined(METAWARE) - if (!bSuccess) - log_printf("Malloc %x aCluster returned null\n", - sizeof(KMSClusterEntry) * KMS_MAX_CLUSTER_NUM); -#endif - - if ( bSuccess ) - { - iClusterNum = i_pProfile->m_iClusterNum; - memcpy( aCluster, i_pProfile->m_aCluster, - sizeof(KMSClusterEntry) * iClusterNum ); - - // initialize to false since all KMAs could be disabled - bSuccess = false; - for ( j = 0; j < iClusterNum; j++ ) - { - if ( aCluster[j].m_iEnabled == FALSE ) - { - continue; - } - - sApplianceAddress = aCluster[j].m_wsApplianceNetworkAddress; - K_snprintf(sURL, - KMS_MAX_URL, - "https://%s:%d", - sApplianceAddress, - i_pProfile->m_iPortForDiscoveryService); - - Log(AUDIT_CLIENT_GetClusterInformation, - NULL, - sApplianceAddress, - "Failing over and trying this appliance"); - - // SOAP - discover cluster - bSuccess = - KMS_Discovery::soap_call_KMS_Discovery__DiscoverCluster( - pstSoap, - sURL, - NULL, - NULL, - stResponse ) == SOAP_OK; - - if ( !bSuccess ) - { - GetSoapFault(sSoapFaultMsg, (struct soap*)pstSoap); - GetPeerNetworkAddress(sKmaAddress, pstSoap); - LogError(i_pProfile,AUDIT_CLIENT_GET_CLUSTER_INFORMATION_SOAP_ERROR, - NULL, - sKmaAddress, - sSoapFaultMsg ); - } - else - { - // The discover succeeded - break; - } - } - } - - if ( aCluster != 0 ) - { - free(aCluster); - } - - if ( bSuccess ) - { - // Set the Profile's initial appliance to the Appliance - // that we just succeeded to Discover from. KMSClient_SelectAppliance() - // persists the updated config - KMSClient_SelectAppliance( i_pProfile, - i_pProfile->m_aCluster[j].m_wsApplianceNetworkAddress ); - } - } - } - - if ( bSuccess ) - { - if (((int)strlen(stResponse.EntitySiteID) > i_iEntitySiteIDSize - 1)) - { - bSuccess = false; - LogError(i_pProfile,AUDIT_CLIENT_GET_CLUSTER_INFORMATION, - NULL, - NULL, - "returned site id size too large" ); - } - } - - // copy returned cluster information into i_pProfile->m_aCluster after - // filtering the cluster members to a list with size <= KMS_MAX_CLUSTER_NUM - if ( bSuccess ) - { - KMS_Discovery::KMS_Discovery__ArrayOfClusterMembers aFilteredCluster; - - bSuccess = FilterCluster(&stResponse, i_pProfile->m_eKMSmode == FIPS_MODE, &aFilteredCluster); - if (!bSuccess ) - { - LogError(i_pProfile, AUDIT_CLIENT_GET_CLUSTER_INFORMATION, - NULL, - NULL, - "cluster response filtering failed" ); - } - - if(bSuccess) - { - int i; - bool bPersistClusterConfig = ClusterConfigChanged(i_pProfile, - stResponse.EntitySiteID, - &aFilteredCluster); - - strncpy(o_wsEntitySiteID,stResponse.EntitySiteID, i_iEntitySiteIDSize-1 ); - o_wsEntitySiteID[i_iEntitySiteIDSize-1] = '\0'; - - strncpy(i_pProfile->m_wsEntitySiteID, stResponse.EntitySiteID, i_iEntitySiteIDSize-1 ); - i_pProfile->m_wsEntitySiteID[i_iEntitySiteIDSize-1] = '\0'; - - // fill the aCluster array in the i_pProfile - i_pProfile->m_iClusterNum = aFilteredCluster.__size; - for (i = 0; i < i_pProfile->m_iClusterNum; i++) - { - i_pProfile->m_aCluster[i].m_lApplianceID = - (aFilteredCluster.__ptr+i)->KMAID; - i_pProfile->m_aCluster[i].m_iEnabled = - (aFilteredCluster.__ptr+i)->Enabled; - i_pProfile->m_aCluster[i].m_iResponding = - (aFilteredCluster.__ptr+i)->Responding; - - i_pProfile->m_aCluster[i].m_lLoad = (aFilteredCluster.__ptr+i)->Load; - strncpy(i_pProfile->m_aCluster[i].m_wsApplianceAlias, - (aFilteredCluster.__ptr+i)->KMAName, - KMS_MAX_ENTITY_ID); - i_pProfile->m_aCluster[i].m_wsApplianceAlias[KMS_MAX_ENTITY_ID] = '\0'; - // if the m_wsApplianceAddress is IPv6 then we'll store - // KMA IPv6 addresses if they have one - if ( strchr( i_pProfile->m_wsApplianceAddress, ':') ) - { - // KMAs prior to 2.1, or 2.1 KMAs at rep schema < 10 - // will not have IPv6 attributes in the soap response - if ( (aFilteredCluster.__ptr+i)->KMANetworkAddressIPv6 && - ValidIPv6KMAaddress((aFilteredCluster.__ptr+i)->KMANetworkAddressIPv6)) - { - strcpy(i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, "["); - char * pLoc = strchr((aFilteredCluster.__ptr+i)->KMANetworkAddressIPv6, - '/'); - if ( pLoc != NULL ) - { - // remove prefix from address - *pLoc = '\0'; - strcat(i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - (aFilteredCluster.__ptr+i)->KMANetworkAddressIPv6 ); - } - else - { - strcat(i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - (aFilteredCluster.__ptr + i)->KMANetworkAddressIPv6); - } - strcat(i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, "]"); - } - else - { - // use the IPv4 address - strncpy(i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - (aFilteredCluster.__ptr+i)->KMANetworkAddress, - KMS_MAX_NETWORK_ADDRESS); - } - } - else - { - strncpy(i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - (aFilteredCluster.__ptr+i)->KMANetworkAddress, - KMS_MAX_NETWORK_ADDRESS); - } - i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS] = '\0'; - strncpy(i_pProfile->m_aCluster[i].m_wsApplianceSiteID, - (aFilteredCluster.__ptr+i)->KMASiteID, - KMS_MAX_ENTITY_SITE_ID); - i_pProfile->m_aCluster[i].m_wsApplianceSiteID[KMS_MAX_ENTITY_SITE_ID] = '\0'; - - if ((aFilteredCluster.__ptr + i)->KMAVersion) - { - strncpy(i_pProfile->m_aCluster[i].m_sKMAVersion, - (aFilteredCluster.__ptr + i)->KMAVersion, - KMS_MAX_VERSION_LENGTH); - i_pProfile->m_aCluster[i].m_sKMAVersion[KMS_MAX_VERSION_LENGTH] = '\0'; - } - else - { - i_pProfile->m_aCluster[i].m_sKMAVersion[0] = '\0'; - } - - if ((aFilteredCluster.__ptr + i)->KMS_Discovery__Locked) - { - i_pProfile->m_aCluster[i].m_iKMALocked = TRUE; - } - else - { - i_pProfile->m_aCluster[i].m_iKMALocked = FALSE; - } - } - - // now release malloc'd storage from filtering the cluster response - FreeFilteredCluster( &aFilteredCluster, aFilteredCluster.__size ); - - // fill the array specified by the caller - *o_pApplianceNum = i_pProfile->m_iClusterNum; - for (i = 0; i < i_pProfile->m_iClusterNum; i++) - { - o_pClusterEntryArray[i].m_lApplianceID = i_pProfile->m_aCluster[i].m_lApplianceID; - o_pClusterEntryArray[i].m_iEnabled = i_pProfile->m_aCluster[i].m_iEnabled; - o_pClusterEntryArray[i].m_iResponding = i_pProfile->m_aCluster[i].m_iResponding; - o_pClusterEntryArray[i].m_lLoad = i_pProfile->m_aCluster[i].m_lLoad; - strncpy(o_pClusterEntryArray[i].m_wsApplianceAlias, - i_pProfile->m_aCluster[i].m_wsApplianceAlias, - KMS_MAX_ENTITY_ID); - o_pClusterEntryArray[i].m_wsApplianceAlias[KMS_MAX_ENTITY_ID] = '\0'; - strncpy(o_pClusterEntryArray[i].m_wsApplianceNetworkAddress, - i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - KMS_MAX_NETWORK_ADDRESS); - o_pClusterEntryArray[i].m_wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS] = '\0'; - strncpy(o_pClusterEntryArray[i].m_wsApplianceSiteID, - i_pProfile->m_aCluster[i].m_wsApplianceSiteID, - KMS_MAX_ENTITY_SITE_ID); - o_pClusterEntryArray[i].m_wsApplianceSiteID[KMS_MAX_ENTITY_SITE_ID] = '\0'; - strncpy(o_pClusterEntryArray[i].m_sKMAVersion, i_pProfile->m_aCluster[i].m_sKMAVersion, - KMS_MAX_VERSION_LENGTH); - o_pClusterEntryArray[i].m_sKMAVersion[KMS_MAX_VERSION_LENGTH] = '\0'; - } - - i_pProfile->m_iLastClusterDiscoveryTime = K_GetTickCount() / 1000; - i_pProfile->m_bIsClusterDiscoveryCalled = true; - - if ( bPersistClusterConfig ) - { - bSuccess = StoreCluster(i_pProfile); - if (!bSuccess) - { - Log(AUDIT_CLIENT_GetClusterInformation, - NULL, - NULL, - "Could not store cluster"); - } - } - } - } - - // cleanup - if (pstSoap) - { - soap_destroy(pstSoap); - soap_end(pstSoap); - if (!bSuccess) - { - soap_free(pstSoap); - } - else - { - // we want to persist discovery soap runtime to avoid ssl handshakes so soap_free() is not called - } - } - - // if we're enrolled but cannot get cluster information from an appliance, then we'll try to load - // it from the profile - if ( !bSuccess && i_pProfile->m_iEnrolled ) - { - int bClusterInformationFound = false; - - bSuccess = LoadClusterInformation( i_pProfile, bClusterInformationFound ); - - if ( bSuccess && bClusterInformationFound ) - { - Log(AUDIT_CLIENT_GetClusterInformation, - NULL, - NULL, - "Using persisted cluster information"); - - strncpy(o_wsEntitySiteID, i_pProfile->m_wsEntitySiteID, i_iEntitySiteIDSize-1); - o_wsEntitySiteID[i_iEntitySiteIDSize-1] = '\0'; - - // fill the array specified by the caller - *o_pApplianceNum = i_pProfile->m_iClusterNum; - for (int i = 0; i < i_pProfile->m_iClusterNum; i++) - { - o_pClusterEntryArray[i].m_lApplianceID = i_pProfile->m_aCluster[i].m_lApplianceID; - o_pClusterEntryArray[i].m_iEnabled = i_pProfile->m_aCluster[i].m_iEnabled; - o_pClusterEntryArray[i].m_iResponding = TRUE; // since cluster info comes from a file, set it to TRUE - - o_pClusterEntryArray[i].m_lLoad = i_pProfile->m_aCluster[i].m_lLoad; - strncpy(o_pClusterEntryArray[i].m_wsApplianceAlias, - i_pProfile->m_aCluster[i].m_wsApplianceAlias, - KMS_MAX_ENTITY_ID); - o_pClusterEntryArray[i].m_wsApplianceAlias[KMS_MAX_ENTITY_ID] = '\0'; - strncpy(o_pClusterEntryArray[i].m_wsApplianceNetworkAddress, - i_pProfile->m_aCluster[i].m_wsApplianceNetworkAddress, - KMS_MAX_NETWORK_ADDRESS); - o_pClusterEntryArray[i].m_wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS] = '\0'; - strncpy(o_pClusterEntryArray[i].m_wsApplianceSiteID, - i_pProfile->m_aCluster[i].m_wsApplianceSiteID, - KMS_MAX_ENTITY_SITE_ID); - o_pClusterEntryArray[i].m_wsApplianceSiteID[KMS_MAX_ENTITY_SITE_ID] = '\0'; - strncpy(o_pClusterEntryArray[i].m_sKMAVersion, - i_pProfile->m_aCluster[i].m_sKMAVersion, - KMS_MAX_VERSION_LENGTH); - o_pClusterEntryArray[i].m_sKMAVersion[KMS_MAX_VERSION_LENGTH] = '\0'; - } - - i_pProfile->m_iLastClusterDiscoveryTime = K_GetTickCount() / 1000; - } - else if ( bSuccess && !bClusterInformationFound ) - { - // if we're here, then we need to return an error - bSuccess = false; - } - } - - return bSuccess; -} - -bool KMSClient_NoFIPSCompatibleKMAs(const KMSClientProfile * const i_pProfile) -{ - bool bNoFIPScompatibleKMA = true; - for (int i=0; i < i_pProfile->m_iClusterNum; i++) - { - if ( FIPScompatibleKMA(i_pProfile->m_aCluster[i].m_sKMAVersion)) - { - bNoFIPScompatibleKMA = false; - break; - } - } - return bNoFIPScompatibleKMA; -} - -/*--------------------------------------------------------------------------- - * Function: KMSClient_SelectAppliance - * - *--------------------------------------------------------------------------*/ -bool KMSClient_SelectAppliance(KMSClientProfile *i_pProfile, - utf8char *i_wsApplianceAddress) -{ - FATAL_ASSERT(i_pProfile); - FATAL_ASSERT(i_wsApplianceAddress); - - CAutoMutex oAutoMutex( (K_MUTEX_HANDLE)i_pProfile->m_pLock ); - - bool bSuccess = true; - - if(strlen(i_wsApplianceAddress) >= KMS_MAX_NETWORK_ADDRESS) - { - LogError(i_pProfile,AUDIT_CLIENT_SELECT_APPLIANCE, - NULL, - NULL, - "Appliance Address too large" ); - bSuccess = false; - } - - if(bSuccess) - { - strncpy(i_pProfile->m_wsApplianceAddress, - i_wsApplianceAddress, - KMS_MAX_NETWORK_ADDRESS); - i_pProfile->m_wsApplianceAddress[KMS_MAX_NETWORK_ADDRESS] = 0; - } - - bSuccess = StoreConfig( i_pProfile ); - - return bSuccess; -} - -bool KMSClient_ProfileLoaded( KMSClientProfile *i_pProfile ) -{ - -#if defined(DEBUG) && defined(METAWARE) - log_printf ("profile: %x", i_pProfile); - log_printf ("profile: enrolled %x", i_pProfile->m_iEnrolled); - log_printf ("profile: version %x", i_pProfile->m_iVersion); -#endif - - // more extensive tests could be performed but this should suffice - if ( i_pProfile && - i_pProfile->m_iEnrolled && - i_pProfile->m_iVersion == KMS_AGENT_VERSION ) - { - return true; - } - else - { - return false; - } -} - -/*--------------------------------------------------------------------------- - * Function: KMSClient_DeleteProfile - * - *--------------------------------------------------------------------------*/ -bool KMSClient_DeleteProfile(utf8char *i_wsProfileName) -{ - FATAL_ASSERT( i_wsProfileName && (strlen(i_wsProfileName) > 0) ); - - bool bSuccess = true; - - if (ProfileExists(g_wsWorkingDirectory, /* pass in default */ - i_wsProfileName)) - { - bSuccess = DeleteStorageProfile(i_wsProfileName); - } - - return bSuccess; -} - -/*--------------------------------------------------------------------------- - * Function: KMSClient_UnloadProfile - * - *--------------------------------------------------------------------------*/ -bool KMSClient_UnloadProfile(KMSClientProfile *i_pProfile) -{ - if(i_pProfile != NULL && i_pProfile->m_pLock != NULL ) - { -#ifdef KMSUSERPKCS12 - /* Delete the private client key file if it's still around */ - CleanupPrivateKeyFile(i_pProfile); -#endif - if (i_pProfile->m_pAgentLoadBalancer != NULL) - { - delete reinterpret_cast - (i_pProfile->m_pAgentLoadBalancer); - } - if (i_pProfile->m_pDataUnitCache != NULL) - { - delete reinterpret_cast (i_pProfile->m_pDataUnitCache); - } - K_DestroyMutex((K_MUTEX_HANDLE)i_pProfile->m_pLock); - i_pProfile->m_pLock = 0; - - if ( i_pProfile->m_pvSoap ) - { - soap_destroy( (struct soap*)i_pProfile->m_pvSoap ); - soap_end( (struct soap*)i_pProfile->m_pvSoap ); - soap_done( (struct soap*)i_pProfile->m_pvSoap ); - - free( (struct soap*)i_pProfile->m_pvSoap ); - i_pProfile->m_pvSoap = 0; - } - - if ( i_pProfile->m_pvDiscoverySoap) - { - soap_destroy( (struct soap*)i_pProfile->m_pvDiscoverySoap ); - soap_end( (struct soap*)i_pProfile->m_pvDiscoverySoap ); - soap_done( (struct soap*)i_pProfile->m_pvDiscoverySoap ); - - free( (struct soap*)i_pProfile->m_pvDiscoverySoap ); - i_pProfile->m_pvDiscoverySoap = 0; - } - } - - i_pProfile->m_iEnrolled = FALSE; - - return true; /* always return true, maybe there are cases which return false in the future */ -} - -bool FIPScompatibleKMA( - const char * const i_sKMAVersion) { - return (strcmp(i_sKMAVersion, - FIPS_COMPATIBLE_KMA_VERSION) >= 0); -} - -#ifdef KMSUSERPKCS12 -extern "C" -KMS_AGENT_STATUS -KMSAgent_GetProfileStatus( - char* i_pProfileName, - KMSAGENT_PROFILE_FLAGS *flags) -{ - /* - * Determine how "initialized" the KMS token is by checking for - * the profile config file and also the entity key container (pkcs#12). - */ - if (ProfileExists(g_wsWorkingDirectory, i_pProfileName)) { - *flags |= KMSAGENT_PROFILE_EXISTS_FLAG; - if (ClientKeyP12Exists(i_pProfileName)) - *flags |= KMSAGENT_CLIENTKEY_EXISTS_FLAG; - } - return (KMS_AGENT_STATUS_OK); -} -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSClientProfile.h --- a/usr/src/lib/libkmsagent/common/KMSClientProfile.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,456 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*-------------------------------------------------------------------------*/ -/** - * \file KMSClientProfile.h - * - * The KMS Client profile management API, including profile setup, CA - * certificate download, and Certificate retrieval - * - */ -/*-------------------------------------------------------------------------*/ - -#ifndef KMSCLIENT_PROFILE_H -#define KMSCLIENT_PROFILE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef KMS_LONG_LONG -#define KMS_LONG_LONG - -#ifdef WIN32 - typedef __int64 Long64; -#else - typedef long long Long64; -#endif - - -#endif - -#ifdef KMSUSERPKCS12 -#define CLIENT_PK12_FILE "clientkey.p12" -#endif - -/** - * \note UTF-8 encoding is used for the underlying SOAP RPC transactions by - * this API. In order to support environments lacking wchar.h - * traditional C strings are used instead. - */ -typedef char * utf8cstr; - -/** - * @see commments for utf8cstr. - */ -typedef char utf8char; - -/** - * KMS Agent Toolkit Version identifier - */ -#define KMS_AGENT_VERSION 0x210 - -/*--------------------------------------------------------------------------- - * Limits and sizes - *--------------------------------------------------------------------------*/ -/** - * The maximum length of an agent name. - */ -#define KMS_MAX_AGENT_NAME 64 - -/** - * The size of a data unit ID in bytes. - */ -#define KMS_DATA_UNIT_ID_SIZE 16 - -/** - * The maximum lenght of a description for key group or data unit. - */ -#define KMS_MAX_DESCRIPTION 64 - -/** - * The maximum maximum length of an external unique id. - */ -#define KMS_MAX_EXTERNAL_UNIQUE_ID_SIZE 32 - -/** - * The maximum external tag length. - */ -#define KMS_MAX_EXTERNAL_TAG 64 - -/** - * The size of a key ID in bytes. - */ -#define KMS_KEY_ID_SIZE 30 - -/** - * The size of an AES Key Wrapping Key ID. - */ -#define KMS_KWK_KEY_ID_SIZE 8 - -/** - * The maximum size of a key in bytes. - */ -#define KMS_MAX_KEY_SIZE 32 - -/** - * The maximum size of an wrapped key(RFC3394 AES Key Wrap) in bytes. - */ -#define KMS_MAX_WRAPPED_KEY_SIZE KMS_MAX_KEY_SIZE+8 - -/** - * The maximum length of a key group ID. - */ -#define KMS_MAX_KEY_GROUP_ID_SIZE 64 - -/** - * The maximum size of a key group list to be returned. This should - * be sufficient for agents as this is an atypical call. - */ -#define KMS_MAX_LIST_KEY_GROUPS 100 - -/** - * The maximum number of keys returned in a key list. - */ -#define KMS_MAX_PAGE_SIZE 32 - -/** - * The maximum passphrase length. - */ -#define KMS_MAX_PASSPHRASE 64 - -/** - * The maximum length of agent's name, aka ID. - */ -#define KMS_MAX_ENTITY_ID 64 - -/** - * The maximum length of an agent's sited ID. - */ -#define KMS_MAX_ENTITY_SITE_ID 64 - -/** - * The maximum length of a URL. - */ -#define KMS_MAX_URL 512 - -/** - * The maximum length of a filter parameter field name. - */ -#define KMS_MAX_FIELD_NAME 64 - -/** - * The maximum length of a query parameter sort field value. - */ -#define KMS_MAX_FIELD_VALUE 64 - -/** - * The maximum ID length used in various types of IDs. - */ -#define KMS_MAX_ID 64 - -/** - * The maximum length of a KMA network address, either IPv4 or IPv6. - * Also maximum hostname length if/when hostnames are supported - */ -#define KMS_MAX_NETWORK_ADDRESS 256 - -/** - * The maximum length of a file name. - */ -#define KMS_MAX_FILE_NAME 256 - -/** - * The maximum length of error strings. - */ -#define KMS_MAX_ERROR_STRING 1024 - -/** - * the number of nodes in a KMS is variable. This constant - * dictates how many of the KMAs in a KMS will be saved to the - * profile, persisted to storage and used for load balancing and failover. See - * KMSAgent_GetClusterInformation - * Range: 1 .. max int, users should con - */ -#ifndef KMS_MAX_CLUSTER_NUM -#define KMS_MAX_CLUSTER_NUM 20 -#endif - -/** - * The maximum length for SHA1 hashes used in authentication. - */ -#define KMS_MAX_HASH_SIZE 20 - -/** - * The maximum length of a KMS verstion string. - */ -#define KMS_MAX_VERSION_LENGTH 100 - -/** - * The maximum length of working directory. - */ -#define KMS_MAX_PATH_LENGTH 1024 - -/** - * typedef for Key ID - */ -typedef unsigned char KEY_ID [KMS_KEY_ID_SIZE]; - -/** - * typedef for an unwrapped Key - */ -typedef unsigned char KEY [KMS_MAX_KEY_SIZE]; - -/** - * typedef for an AES wrapped key - */ -typedef unsigned char WRAPPED_KEY [KMS_MAX_WRAPPED_KEY_SIZE]; - -/** - * typedef for KMSClusterEntry struct - */ -typedef struct KMSClusterEntry KMSClusterEntry; - -/** \struct KMSClusterEntry - * A struct representing each Key Management Appliance discovered in the KMS cluster - */ -struct KMSClusterEntry -{ - /** - * The KMA's identifier. - */ - Long64 m_lApplianceID; - - /** - * The KMA's name. - */ - utf8char m_wsApplianceAlias[KMS_MAX_ENTITY_ID + 1]; - - /** - * The Sited ID for the KMA. - */ - utf8char m_wsApplianceSiteID[KMS_MAX_ENTITY_SITE_ID + 1]; - - /** - * A network address for the KMA that corresponds to the agent's network. - * KMAs are multi-homed so only an address useful to the agent is provided. - */ - utf8char m_wsApplianceNetworkAddress[KMS_MAX_NETWORK_ADDRESS + 1]; - - /** - * Enabled status for the KMA, 1 for enabled, 0 if disabled. - */ - int m_iEnabled; - - /** - * Unused at present but may be used for reporting a KMAs load to be used - * as a load balancing heuristic. - */ - Long64 m_lLoad; - - /** - * A boolean indicating the current response status of a KMA on the network. - * A non-responding KMA may be either down or unreachable due to the network. - */ - int m_iResponding; - - /** - * The KMA's version level. - */ - utf8char m_sKMAVersion[KMS_MAX_VERSION_LENGTH+1]; - - /** - * KMA lock status as provided by KMS Discover Cluster service. Defaults - * to false for KMAs earlier than KMS 2.3 where it was first introduced. - */ - int m_iKMALocked; -}; - - -/** - * the profile for an agent. The profile contains sections that are persisted - * and fields that are volatile. See KMSAgentStorage.h for interfaces to load/store - * the persistent sections. - *

    Note that members of this struct should - * not be accessed directly by users of this library. - */ - -/** \struct KMSClientProfile - * the properties comprising the profile, some of which must be persisted. - */ -typedef struct KMSClientProfile_s -{ - /** - * the version of the KMS Agent Library - */ - int m_iVersion; - - /** - * Profile Name - */ - utf8char m_wsProfileName[KMS_MAX_ENTITY_ID + 1]; - - /** - * Subject Name - */ - utf8char m_wsEntityID[KMS_MAX_ENTITY_ID + 1]; - - /** - * Appliance Address used for enrollment and discovery - */ - utf8char m_wsApplianceAddress[KMS_MAX_NETWORK_ADDRESS + 1]; - - /** - * KMS CA service port - */ - int m_iPortForCAService; - /** - * KMS Certificate service port - */ - int m_iPortForCertificateService; - - /** - * KMS Agent service port - */ - int m_iPortForAgentService; - - /** - * KMS Discovery service port - */ - int m_iPortForDiscoveryService; - - /** - * timeout in seconds before failover to alternate KMS in cluster - */ - int m_iTransactionTimeout; - - /** - * the number of times failover will be attempted - */ - int m_iFailoverLimit; - - /** - * the number of times the current transaction has failed over - */ - int m_iFailoverAttempts; - - /** - * TRUE when agent has enrolled and stored its certificates. - */ - int m_iEnrolled; - - /** - * The agent's passphrase after "key stretching", i.e. hashing the number of - * times specified by the KMA during enrollment, and converted to hexadecimal. - */ - char m_sHexHashedPassphrase[2*KMS_MAX_HASH_SIZE+1]; - - /** - * gSOAP runtime context. - */ - void *m_pvSoap; - - /** - * gSOAP runtime context for discovery. - */ - void *m_pvDiscoverySoap; - - /** - * A lock used internally by the agent library. - */ - void *m_pLock; - - /** - * The minimum interval between automatic cluster discovery requests in seconds. - * A value of zero seconds disables load balancing and periodic cluster - * discovery calls. - */ - int m_iClusterDiscoveryFrequency; - - /** - * The time in seconds when the cluster discovery service was last called for the - * current session. - */ - int m_iLastClusterDiscoveryTime; - - /** - * The Site ID assigned to the agent by the KMS administrators. - */ - utf8char m_wsEntitySiteID[KMS_MAX_ENTITY_SITE_ID + 1]; - - /** - * The total number of KMA in the KMS cluster as reported by the last - * cluster discovery. - */ - int m_iClusterNum; - - /** - * An array of the KMAs withhin the cluster. - */ - KMSClusterEntry m_aCluster[KMS_MAX_CLUSTER_NUM]; - - /** - * A boolean flag for the first cluster discovery call. - */ - int m_bIsClusterDiscoveryCalled; - - /** - * A handle to the DataUnitCache used for selection of a KMA. - */ - void *m_pDataUnitCache; - - /** - * A handle to the load balancer. - */ - void *m_pAgentLoadBalancer; - - /** - * error string - */ - utf8char m_wsErrorString[KMS_MAX_ERROR_STRING + 1]; - - /** - * URL to KMA service within cluster - */ - char m_sURL[KMS_MAX_URL + 1]; - - /** - * The security mode specified to KMSAgent_LoadProfile - */ - int m_eKMSmode; - -#ifdef KMSUSERPKCS12 - int m_iLastErrorCode; -#endif -} KMSClientProfile; - -#ifdef __cplusplus -} -#endif - - -#endif - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/KMSClientProfileImpl.h --- a/usr/src/lib/libkmsagent/common/KMSClientProfileImpl.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,344 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/** - * \file KMSClientProfileImpl.h - */ - -#ifndef CLIENT_PROFILE_IMPL_H -#define CLIENT_PROFILE_IMPL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define AGENT_LOG_FILE "KMSAgentLog.log" - -/** - * Build383 corresponds to 2.0.2 which does not support AES Key Wrap and - * enforcment of FIPS mode. - */ -#define FIPS_COMPATIBLE_KMA_VERSION "Build384" - - -extern bool g_bUseFileLog; - -/*--------------------------------------------------------------------------- - * Function: KMSClient_InitializeLibrary - * - * Description: This function initializes the KMS Agent or Management API library. - * It should be called before any other functions are invoked. - * Internally, it setups SSL library and Logging module. - * - * - * Input - * ----- - * i_wsWorkingDirectory -- Working directory of the program which uses the library - * i_bIsManager -- TRUE: Initialize Management Library; FALSE: initialize Agent Library. - * i_bUseFileLog: True if logs should go to a log file in the working directory. - * False otherwise. - * - * Output - * ------ - * return value TRUE or FALSE - * - *--------------------------------------------------------------------------*/ -bool KMSClient_InitializeLibrary( - const utf8cstr i_wsWorkingDirectory, - int i_bUseFileLog ); - -/*--------------------------------------------------------------------------- - * Function: KMSClient_FinalizeLibrary - * - * Description: This function finalizes the KMS Agent(Or Management) API library. - * It should be called when the library is not needed by the program. - * Internally it cleans up SSL library and Logging module. - * - * - * Input - * ----- - * i_bIsManager -- TRUE: Finalize Management Library; FALSE: Finalize Agent Library. - * - * Output - * ------ - * return value TRUE or FALSE - * - *--------------------------------------------------------------------------*/ -bool KMSClient_FinalizeLibrary(); - -utf8cstr KMSClient_GetLastErrorMessage(KMSClientProfile *i_pProfile); - -bool KMSClient_LoadProfile( - KMSClientProfile *io_pProfile, - utf8cstr i_wsProfileName, - utf8cstr i_wsEntityID, - utf8cstr i_wsPassphrase, - utf8cstr i_wsApplianceAddress, - int i_iTransactionTimeout, - int i_iFailOverLimit, - int i_iClusterDiscoveryFrequency, - int i_eKMSmode); - -/*--------------------------------------------------------------------------- - * Function: KMSClient_GetClusterInformation - * - * Description: Get the cluster information by calling cluster discovery - * service. - * - * Input - * ----- - * i_pProfile -- a pointer to an initialized KMSClientProfile structure - * i_iEntitySiteIDSize -- the buffer size of the entity site ID - * (KMS_MAX_ENTITIY_SITE_ID) - * i_iClusterEntryArraySize -- the array size for cluster entries - * (KMS_MAX_CLUSTER_NUM) - * Output - * ------ - * o_wsEntitySiteID -- the entity's Site ID - * o_pApplianceNum -- the returned number of the appliances in the cluster - * o_pClusterEntryArray -- the array of cluster entries - * - * return value TRUE/FALSE - * Use KMSAgent_GetLastErrorMessage() to get the error message - * - * - *--------------------------------------------------------------------------*/ -bool KMSClient_GetClusterInformation(KMSClientProfile *i_pProfile, - utf8cstr o_wsEntitySiteID, - int i_iEntitySiteIDSize, - int *o_pApplianceNum, - KMSClusterEntry *o_pClusterEntryArray, - int i_iClusterEntryArraySize); - -/** - * @return true if any KMAs are not FIPS compatible, i.e. perform AES key - * wrap. - */ -bool KMSClient_NoFIPSCompatibleKMAs(const KMSClientProfile * const i_pProfile); - -/*--------------------------------------------------------------------------- - * Function: KMSClient_SelectAppliance - * - * Description: Select the current appliance. The current appliance is used for - * retrieving cluster information. - * - * Input - * ----- - * i_pProfile -- a pointer to an initialized KMSClientProfile structure - * i_wsApplianceAddress -- the IP address of the appliance - * Output - * ------ - * (none) - * return value TRUE/FALSE - * Use KMSAgent_GetLastErrorMessage() to get the error message - * - * - *--------------------------------------------------------------------------*/ -bool KMSClient_SelectAppliance(KMSClientProfile *i_pProfile, - utf8cstr i_wsApplianceAddress); - -/** - * check if the profile was loaded successfully - * - * @param i_pProfile a pointer that may, or may not be to a loaded profile - * - * @return true if the profile was loaded - */ -bool KMSClient_ProfileLoaded( KMSClientProfile *i_pProfile ); - -/*--------------------------------------------------------------------------- - * Function: KMSClient_DeleteProfile - * - * Description: Delete the profile information from the local disk - * - * - * Input - * ----- - * i_wsProfileName -- the profile name - - * Output - * ------ - * return value TRUE/FALSE - * Use KMSAgent_GetLastErrorMessage() to get the error message - * - *--------------------------------------------------------------------------*/ -bool KMSClient_DeleteProfile(utf8cstr i_wsProfileName); - -/*--------------------------------------------------------------------------- - * Function: KMSClient_UnloadProfile - * - * Description: Destroy the profile information in memory including agent's private - * key. - * - * - * Input - * ----- - * i_pProfile -- a pointer to an initialized KMSClientProfile structure - - * Output - * ------ - * return value TRUE/FALSE - * Use KMSAgent_GetLastErrorMessage() to get the error message - * - *--------------------------------------------------------------------------*/ -bool KMSClient_UnloadProfile(KMSClientProfile *i_pProfile); - -/** - * @return true if the soap fault string indicates that the SSL handshake - * did not succeed due to an invalid certificate. - */ -bool SSL_InvalidCertificate(const char * const i_sErrorString ); - -/** - * compares the error string with various soap fault substrings to determine if the - * error was a server-side error or not, also checks the supplied errno codes against - * various POSIX errno macros that would imply server connection issues - */ -bool ServerError (const char * i_sErrorString, int i_iErrno ); - -#ifdef __cplusplus -} - -// helper macro to turn value into a string -#define LogError(a,b,c,d,e) LogError_function(a,b,#b,c,d,e) - -/** - * Log an error after saving the message in the profile. This supports KMSAgent_GetLastErrorMessage - * @param i_pProfile an initialized profile - * - * @param i_iErrno, the error expressed as a number - * @param i_sOperation, the operation number as a string - * @param i_sEntityID optional, the agent ID - * @param i_sNetworkAddress optional, the address of the KMA involved in the error - * @param i_sMessage optional, an informative error message - */ -void LogError_function(KMSClientProfile *i_pProfile, - int i_iErrno, - const char* i_sOperation, - const char* i_sEntityID, - const char* i_sNetworkAddress, - const char* i_sMessage ); - -#endif - -/** - * @return true if the KMA version string corresponds to a FIPS compatible - * KMA - */ -bool FIPScompatibleKMA ( - const char * const i_sKMAVersion); - -#define AUDIT_CLIENT_LOG_ERROR_BASE 0x300 - -#define AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x00) -#define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_DESCRIPTION_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x01) -#define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_DU_ID_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x02) -#define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x03) -#define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x04) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEYID_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x05) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x06) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x07) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_STATE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x08) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_TYPE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x09) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_KEY_CALLOUT_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0a) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0b) -#define AUDIT_CLIENT_AGENT_DISASSOCIATE_DATA_UNIT_KEYS_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0c) -#define AUDIT_CLIENT_AGENT_LIST_KEY_GROUPS_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0d) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_RESPONSE_INVALID_DESCRIPTION_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0e) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0f) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x10) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEYS_REMAINING_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x11) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEYS_SIZE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x12) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_ARRAY_SIZE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x13) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x14) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x15) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_STATE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x16) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_TYPE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x17) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_KEY_CALLOUT_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x18) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x19) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_RESPONSE_INVALID_DESCRIPTION_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1a) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1b) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1c) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEYID_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1d) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1e) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1f) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_STATE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x20) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_TYPE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x21) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_KEY_CALLOUT_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x22) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x23) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEYID_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x24) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x25) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x26) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_STATE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x27) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_TYPE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x28) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_KEY_CALLOUT_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x29) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2a) -#define AUDIT_CLIENT_COMPUTE_CHALLENGE_RESPONSE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2b) -#define AUDIT_CLIENT_COMPUTE_FIXED_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2c) -#define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_CERTIFICATE_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2d) -#define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_CHALLENGE_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2e) -#define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_KEY_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2f) -#define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_RESPONSE_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x30) -#define AUDIT_CLIENT_GET_CERTIFICATE_SAVE_CA_CERTIFICATE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x31) -#define AUDIT_CLIENT_GET_CERTIFICATE_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x32) -#define AUDIT_CLIENT_GET_CLUSTER_INFORMATION (AUDIT_CLIENT_LOG_ERROR_BASE + 0x33) -#define AUDIT_CLIENT_GET_CLUSTER_INFORMATION_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x34) -#define AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_INVALID_CA_CERTIFICATE_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x35) -#define AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_INVALID_RESPONSE_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x36) -#define AUDIT_CLIENT_LOAD_CLUSTER_INFORMATION_INVALID_CLUSTER_FILE_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x37) -#define AUDIT_CLIENT_LOAD_CLUSTER_INFORMATION_OPEN_CLUSTER_FILE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x38) -#define AUDIT_CLIENT_LOAD_PROFILE_EXPORT_CERTIFICATE_AND_KEY_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x39) -#define AUDIT_CLIENT_LOAD_PROFILE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3a) -#define AUDIT_CLIENT_LOAD_PROFILE_SAVE_CA_CERTIFICATE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3b) -#define AUDIT_CLIENT_LOAD_PROFILE_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3c) -#define AUDIT_CLIENT_SAVE_CLUSTER_INFORMATION_OPEN_CLUSTER_FILE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3d) -#define AUDIT_CLIENT_SAVE_ROOTCA_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3e) -#define AUDIT_CLIENT_SELECT_APPLIANCE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3f) -#define AUDIT_PROFILE_READ_CONFIG_FILE_INVALID_CONFIGURATION_FILE_FORMAT (AUDIT_CLIENT_LOG_ERROR_BASE + 0x40) -#define AUDIT_PROFILE_READ_CONFIG_FILE_OPEN_CONFIGURATION_FILE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x41) -#define AUDIT_PROFILE_WRITE_CONFIG_FILE_OPEN_CONFIGURATION_FILE_FAILED (AUDIT_CLIENT_LOG_ERROR_BASE + 0x42) -#define LoadProfile_AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x43) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_AESKEYUNWRAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x44) -#define AUDIT_CLIENT_AGENT_REGISTER_KWK_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x45) -#define AUDIT_CLIENT_AGENT_REGISTER_KWK_INVALID_KEYID_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x46) -#define AUDIT_CLIENT_AGENT_CREATE_KWK_RNG_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x47) -#define AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_SOAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x48) -#define AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_INVALID_KEY_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x49) -#define AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_INVALID_RSA_PUB_KEY (AUDIT_CLIENT_LOG_ERROR_BASE + 0x50) -#define AUDIT_CLIENT_AGENT_CREATE_KWK_PUBLIC_ENCRYPT_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x51) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_AESKEYUNWRAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x52) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_AESKEYUNWRAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x53) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_AESKEYUNWRAP_ERROR (AUDIT_CLIENT_LOG_ERROR_BASE + 0x54) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x55) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x56) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x57) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_WRAPPED_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x58) -#define AUDIT_CLIENT_AGENT_CREATE_KEY_KWKID_MISMATCH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x59) -#define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_KWKID_MISMATCH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x60) -#define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_KWKID_MISMATCH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x61) -#define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_KWKID_MISMATCH (AUDIT_CLIENT_LOG_ERROR_BASE + 0x62) -#define AUDIT_CLIENT_AGENT_LOAD_PROFILE_NO_FIPS_COMPATIBLE_KMAS_AVAILABLE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x63) - -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/AgentServiceNamespace.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/AgentServiceNamespace.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -#include "KMS_Agent.nsmap" diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/CAServiceNamespace.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/CAServiceNamespace.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -#include "KMS_CA.nsmap" diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/CertificateServiceNamespace.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/CertificateServiceNamespace.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -#include "KMS_Certificate.nsmap" diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/DiscoveryServiceNamespace.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/DiscoveryServiceNamespace.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -#include "KMS_Discovery.nsmap" diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMSAgentWebServiceNamespaces.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMSAgentWebServiceNamespaces.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/*----------------------------------------------------------------------------- - * File: WebServiceNamespaces.h - * - -----------------------------------------------------------------------------*/ - -#ifndef ClientWebServiceNamespaces_H -#define ClientWebServiceNamespaces_H - -extern SOAP_NMAC struct Namespace KMS_CA_namespaces[]; -extern SOAP_NMAC struct Namespace KMS_Certificate_namespaces[]; -extern SOAP_NMAC struct Namespace KMS_Agent_namespaces[]; -extern SOAP_NMAC struct Namespace KMS_Discovery_namespaces[]; - -#endif //ClientWebServiceNamespaces_H diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_Agent.nsmap --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_Agent.nsmap Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include "KMS_AgentH.h" -SOAP_NMAC struct Namespace KMS_Agent_namespaces[] = -{ - {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope"}, - {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding"}, - {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"}, - {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"}, - {"KMS-Agent", "http://www.sun.com/KMS/KMS-Agent"}, - {NULL, NULL} -}; diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_AgentC.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_AgentC.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8820 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_AgentC.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/AgentService/KMS_Agent_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif - -#include "KMS_AgentH.h" - -namespace KMS_Agent { - -SOAP_SOURCE_STAMP("@(#) KMS_AgentC.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) -{ - if (soap->header) - soap_serialize_SOAP_ENV__Header(soap, soap->header); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) -{ - if (soap->header) - { soap->part = SOAP_IN_HEADER; - if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) - return soap->error; - soap->part = SOAP_END_HEADER; - } - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) -{ - soap->part = SOAP_IN_HEADER; - soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); - soap->part = SOAP_END_HEADER; - return soap->header == NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) -{ - if (!soap->header) - { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) - soap_default_SOAP_ENV__Header(soap, soap->header); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) -{ - if (!soap->fault) - { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); - if (!soap->fault) - return; - soap_default_SOAP_ENV__Fault(soap, soap->fault); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) - { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) - { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); - soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) -{ - soap_fault(soap); - if (soap->fault) - soap_serialize_SOAP_ENV__Fault(soap, soap->fault); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) -{ - if (soap->fault) - return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) -{ - return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) - { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); - } - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; - } - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; - return (const char**)&soap->fault->faultstring; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 1) - { if (!soap->fault->detail) - { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); - soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); - } - return (const char**)&soap->fault->detail->__any; - } - if (!soap->fault->SOAP_ENV__Detail) - { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); - soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); - } - return (const char**)&soap->fault->SOAP_ENV__Detail->__any; -} - -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) -{ - int t; - if (soap->version == 1) - { for (;;) - { if (!soap_getelement(soap, &t)) - if (soap->error || soap_ignore_element(soap)) - break; - } - } - if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) - soap->error = SOAP_OK; - return soap->error; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) -{ - if (soap_peek_element(soap)) - return NULL; - if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) - *type = soap_lookup_type(soap, soap->href); - switch (*type) - { - case SOAP_TYPE_KMS_Agent_byte: - return soap_in_byte(soap, NULL, NULL, "xsd:byte"); - case SOAP_TYPE_KMS_Agent_int: - return soap_in_int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_Agent_xsd__int: - return soap_in_xsd__int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_Agent_long: - return soap_in_long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Agent_xsd__long: - return soap_in_xsd__long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Agent_LONG64: - return soap_in_LONG64(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Agent_xsd__float: - return soap_in_xsd__float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_Agent_float: - return soap_in_float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_Agent_unsignedByte: - return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Agent_unsignedInt: - return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition: - return soap_in_KMS_Agent__AuditLogCondition(soap, NULL, NULL, "KMS-Agent:AuditLogCondition"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention: - return soap_in_KMS_Agent__AuditLogRetention(soap, NULL, NULL, "KMS-Agent:AuditLogRetention"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState: - return soap_in_KMS_Agent__DataUnitState(soap, NULL, NULL, "KMS-Agent:DataUnitState"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState: - return soap_in_KMS_Agent__KeyState(soap, NULL, NULL, "KMS-Agent:KeyState"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType: - return soap_in_KMS_Agent__KeyType(soap, NULL, NULL, "KMS-Agent:KeyType"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator: - return soap_in_KMS_Agent__FilterOperator(soap, NULL, NULL, "KMS-Agent:FilterOperator"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder: - return soap_in_KMS_Agent__SortOrder(soap, NULL, NULL, "KMS-Agent:SortOrder"); - case SOAP_TYPE_KMS_Agent_xsd__boolean: - return soap_in_xsd__boolean(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_Agent_bool: - return soap_in_bool(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK: - return soap_in_KMS_Agent__RegisterAgentKWK(soap, NULL, NULL, "KMS-Agent:RegisterAgentKWK"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse: - return soap_in_KMS_Agent__RegisterAgentKWKResponse(soap, NULL, NULL, "KMS-Agent:RegisterAgentKWKResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey: - return soap_in_KMS_Agent__GetAgentKWKPublicKey(soap, NULL, NULL, "KMS-Agent:GetAgentKWKPublicKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse: - return soap_in_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, NULL, NULL, "KMS-Agent:GetAgentKWKPublicKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog: - return soap_in_KMS_Agent__CreateAuditLog(soap, NULL, NULL, "KMS-Agent:CreateAuditLog"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse: - return soap_in_KMS_Agent__CreateAuditLogResponse(soap, NULL, NULL, "KMS-Agent:CreateAuditLogResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2: - return soap_in_KMS_Agent__RetrieveProtectAndProcessKey2(soap, NULL, NULL, "KMS-Agent:RetrieveProtectAndProcessKey2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response: - return soap_in_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, NULL, NULL, "KMS-Agent:RetrieveProtectAndProcessKey2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey: - return soap_in_KMS_Agent__RetrieveProtectAndProcessKey(soap, NULL, NULL, "KMS-Agent:RetrieveProtectAndProcessKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse: - return soap_in_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, NULL, NULL, "KMS-Agent:RetrieveProtectAndProcessKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2: - return soap_in_KMS_Agent__RetrieveDataUnitKeys2(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitKeys2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response: - return soap_in_KMS_Agent__RetrieveDataUnitKeys2Response(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitKeys2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys: - return soap_in_KMS_Agent__RetrieveDataUnitKeys(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitKeys"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse: - return soap_in_KMS_Agent__RetrieveDataUnitKeysResponse(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitKeysResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2: - return soap_in_KMS_Agent__RetrieveKey2(soap, NULL, NULL, "KMS-Agent:RetrieveKey2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response: - return soap_in_KMS_Agent__RetrieveKey2Response(soap, NULL, NULL, "KMS-Agent:RetrieveKey2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey: - return soap_in_KMS_Agent__RetrieveKey(soap, NULL, NULL, "KMS-Agent:RetrieveKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse: - return soap_in_KMS_Agent__RetrieveKeyResponse(soap, NULL, NULL, "KMS-Agent:RetrieveKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2: - return soap_in_KMS_Agent__CreateKey2(soap, NULL, NULL, "KMS-Agent:CreateKey2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response: - return soap_in_KMS_Agent__CreateKey2Response(soap, NULL, NULL, "KMS-Agent:CreateKey2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey: - return soap_in_KMS_Agent__CreateKey(soap, NULL, NULL, "KMS-Agent:CreateKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse: - return soap_in_KMS_Agent__CreateKeyResponse(soap, NULL, NULL, "KMS-Agent:CreateKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys: - return soap_in_KMS_Agent__DisassociateDataUnitKeys(soap, NULL, NULL, "KMS-Agent:DisassociateDataUnitKeys"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse: - return soap_in_KMS_Agent__DisassociateDataUnitKeysResponse(soap, NULL, NULL, "KMS-Agent:DisassociateDataUnitKeysResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID: - return soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitByExternalUniqueID"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse: - return soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitByExternalUniqueIDResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit: - return soap_in_KMS_Agent__RetrieveDataUnit(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnit"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse: - return soap_in_KMS_Agent__RetrieveDataUnitResponse(soap, NULL, NULL, "KMS-Agent:RetrieveDataUnitResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit: - return soap_in_KMS_Agent__CreateDataUnit(soap, NULL, NULL, "KMS-Agent:CreateDataUnit"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse: - return soap_in_KMS_Agent__CreateDataUnitResponse(soap, NULL, NULL, "KMS-Agent:CreateDataUnitResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups: - return soap_in_KMS_Agent__ListKeyGroups(soap, NULL, NULL, "KMS-Agent:ListKeyGroups"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse: - return soap_in_KMS_Agent__ListKeyGroupsResponse(soap, NULL, NULL, "KMS-Agent:ListKeyGroupsResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit: - return soap_in_KMS_Agent__DataUnit(soap, NULL, NULL, "KMS-Agent:DataUnit"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys: - return soap_in_KMS_Agent__ArrayOfKeys(soap, NULL, NULL, "KMS-Agent:ArrayOfKeys"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__Key: - return soap_in_KMS_Agent__Key(soap, NULL, NULL, "KMS-Agent:Key"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups: - return soap_in_KMS_Agent__ArrayOfKeyGroups(soap, NULL, NULL, "KMS-Agent:ArrayOfKeyGroups"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup: - return soap_in_KMS_Agent__KeyGroup(soap, NULL, NULL, "KMS-Agent:KeyGroup"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters: - return soap_in_KMS_Agent__QueryParameters(soap, NULL, NULL, "KMS-Agent:QueryParameters"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters: - return soap_in_KMS_Agent__ArrayOfFilterParameters(soap, NULL, NULL, "KMS-Agent:ArrayOfFilterParameters"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters: - return soap_in_KMS_Agent__FilterParameters(soap, NULL, NULL, "KMS-Agent:FilterParameters"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary: - return soap_in_KMS_Agent__ArrayOfHexBinary(soap, NULL, NULL, "KMS-Agent:ArrayOfHexBinary"); - case SOAP_TYPE_KMS_Agent_xsd__hexBinary: - return soap_in_xsd__hexBinary(soap, NULL, NULL, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__Key: - return soap_in_PointerToKMS_Agent__Key(soap, NULL, NULL, "KMS-Agent:Key"); - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__KeyGroup: - return soap_in_PointerToKMS_Agent__KeyGroup(soap, NULL, NULL, "KMS-Agent:KeyGroup"); - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__FilterParameters: - return soap_in_PointerToKMS_Agent__FilterParameters(soap, NULL, NULL, "KMS-Agent:FilterParameters"); - case SOAP_TYPE_KMS_Agent_PointerToxsd__hexBinary: - return soap_in_PointerToxsd__hexBinary(soap, NULL, NULL, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Agent_PointerTounsignedByte: - return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Agent_xsd__duration: - { char **s; - s = soap_in_xsd__duration(soap, NULL, NULL, "xsd:duration"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Agent_xsd__dateTime: - { char **s; - s = soap_in_xsd__dateTime(soap, NULL, NULL, "xsd:dateTime"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Agent_xsd__string: - { char **s; - s = soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Agent__QName: - { char **s; - s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Agent_string: - { char **s; - s = soap_in_string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - default: - { const char *t = soap->type; - if (!*t) - t = soap->tag; - if (!soap_match_tag(soap, t, "xsd:byte")) - { *type = SOAP_TYPE_KMS_Agent_byte; - return soap_in_byte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_Agent_int; - return soap_in_int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_Agent_xsd__int; - return soap_in_xsd__int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Agent_long; - return soap_in_long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Agent_xsd__long; - return soap_in_xsd__long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Agent_LONG64; - return soap_in_LONG64(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_Agent_xsd__float; - return soap_in_xsd__float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_Agent_float; - return soap_in_float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedByte")) - { *type = SOAP_TYPE_KMS_Agent_unsignedByte; - return soap_in_unsignedByte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedInt")) - { *type = SOAP_TYPE_KMS_Agent_unsignedInt; - return soap_in_unsignedInt(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:AuditLogCondition")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition; - return soap_in_KMS_Agent__AuditLogCondition(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:AuditLogRetention")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention; - return soap_in_KMS_Agent__AuditLogRetention(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:DataUnitState")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState; - return soap_in_KMS_Agent__DataUnitState(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:KeyState")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState; - return soap_in_KMS_Agent__KeyState(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:KeyType")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType; - return soap_in_KMS_Agent__KeyType(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:FilterOperator")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator; - return soap_in_KMS_Agent__FilterOperator(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:SortOrder")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder; - return soap_in_KMS_Agent__SortOrder(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_Agent_xsd__boolean; - return soap_in_xsd__boolean(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_Agent_bool; - return soap_in_bool(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RegisterAgentKWK")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK; - return soap_in_KMS_Agent__RegisterAgentKWK(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RegisterAgentKWKResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse; - return soap_in_KMS_Agent__RegisterAgentKWKResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:GetAgentKWKPublicKey")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey; - return soap_in_KMS_Agent__GetAgentKWKPublicKey(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:GetAgentKWKPublicKeyResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse; - return soap_in_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateAuditLog")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog; - return soap_in_KMS_Agent__CreateAuditLog(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateAuditLogResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse; - return soap_in_KMS_Agent__CreateAuditLogResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveProtectAndProcessKey2")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2; - return soap_in_KMS_Agent__RetrieveProtectAndProcessKey2(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveProtectAndProcessKey2Response")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response; - return soap_in_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveProtectAndProcessKey")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey; - return soap_in_KMS_Agent__RetrieveProtectAndProcessKey(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveProtectAndProcessKeyResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse; - return soap_in_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitKeys2")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2; - return soap_in_KMS_Agent__RetrieveDataUnitKeys2(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitKeys2Response")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response; - return soap_in_KMS_Agent__RetrieveDataUnitKeys2Response(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitKeys")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys; - return soap_in_KMS_Agent__RetrieveDataUnitKeys(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitKeysResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse; - return soap_in_KMS_Agent__RetrieveDataUnitKeysResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveKey2")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2; - return soap_in_KMS_Agent__RetrieveKey2(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveKey2Response")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response; - return soap_in_KMS_Agent__RetrieveKey2Response(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveKey")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey; - return soap_in_KMS_Agent__RetrieveKey(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveKeyResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse; - return soap_in_KMS_Agent__RetrieveKeyResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateKey2")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2; - return soap_in_KMS_Agent__CreateKey2(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateKey2Response")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response; - return soap_in_KMS_Agent__CreateKey2Response(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateKey")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey; - return soap_in_KMS_Agent__CreateKey(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateKeyResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse; - return soap_in_KMS_Agent__CreateKeyResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:DisassociateDataUnitKeys")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys; - return soap_in_KMS_Agent__DisassociateDataUnitKeys(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:DisassociateDataUnitKeysResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse; - return soap_in_KMS_Agent__DisassociateDataUnitKeysResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitByExternalUniqueID")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID; - return soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitByExternalUniqueIDResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse; - return soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnit")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit; - return soap_in_KMS_Agent__RetrieveDataUnit(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:RetrieveDataUnitResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse; - return soap_in_KMS_Agent__RetrieveDataUnitResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateDataUnit")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit; - return soap_in_KMS_Agent__CreateDataUnit(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:CreateDataUnitResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse; - return soap_in_KMS_Agent__CreateDataUnitResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:ListKeyGroups")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups; - return soap_in_KMS_Agent__ListKeyGroups(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:ListKeyGroupsResponse")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse; - return soap_in_KMS_Agent__ListKeyGroupsResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:DataUnit")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit; - return soap_in_KMS_Agent__DataUnit(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:ArrayOfKeys")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys; - return soap_in_KMS_Agent__ArrayOfKeys(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:Key")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__Key; - return soap_in_KMS_Agent__Key(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:ArrayOfKeyGroups")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups; - return soap_in_KMS_Agent__ArrayOfKeyGroups(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:KeyGroup")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup; - return soap_in_KMS_Agent__KeyGroup(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:QueryParameters")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters; - return soap_in_KMS_Agent__QueryParameters(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:ArrayOfFilterParameters")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters; - return soap_in_KMS_Agent__ArrayOfFilterParameters(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:FilterParameters")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters; - return soap_in_KMS_Agent__FilterParameters(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Agent:ArrayOfHexBinary")) - { *type = SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary; - return soap_in_KMS_Agent__ArrayOfHexBinary(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:hexBinary")) - { *type = SOAP_TYPE_KMS_Agent_xsd__hexBinary; - return soap_in_xsd__hexBinary(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:duration")) - { char **s; - *type = SOAP_TYPE_KMS_Agent_xsd__duration; - s = soap_in_xsd__duration(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:dateTime")) - { char **s; - *type = SOAP_TYPE_KMS_Agent_xsd__dateTime; - s = soap_in_xsd__dateTime(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_Agent_xsd__string; - s = soap_in_xsd__string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:QName")) - { char **s; - *type = SOAP_TYPE_KMS_Agent__QName; - s = soap_in__QName(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_Agent_string; - s = soap_in_string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - t = soap->tag; - } - } - soap->error = SOAP_TAG_MISMATCH; - return NULL; -} -#endif - -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) -{ - if (!soap_peek_element(soap)) - { int t; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); - if (soap->mustUnderstand && !soap->other) - return soap->error = SOAP_MUSTUNDERSTAND; - if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); - return soap->error = SOAP_TAG_MISMATCH; - } - if (!*soap->id || !soap_getelement(soap, &t)) - { soap->peeked = 0; - if (soap->fignore) - soap->error = soap->fignore(soap, soap->tag); - else - soap->error = SOAP_OK; - DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); - if (!soap->error && soap->body) - { soap->level++; - while (!soap_ignore_element(soap)) - ; - if (soap->error == SOAP_NO_TAG) - soap->error = soap_element_end_in(soap, NULL); - } - } - } - return soap->error; -} - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) -{ - int i; - struct soap_plist *pp; - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) - for (i = 0; i < SOAP_PTRHASH; i++) - for (pp = soap->pht[i]; pp; pp = pp->next) - if (pp->mark1 == 2 || pp->mark2 == 2) - if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) - return soap->error; - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) -{ - switch (type) - { - case SOAP_TYPE_KMS_Agent_byte: - return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); - case SOAP_TYPE_KMS_Agent_int: - return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_Agent_xsd__int: - return soap_out_xsd__int(soap, tag, id, (const long *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_Agent_long: - return soap_out_long(soap, tag, id, (const long *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Agent_xsd__long: - return soap_out_xsd__long(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Agent_LONG64: - return soap_out_LONG64(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Agent_xsd__float: - return soap_out_xsd__float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_Agent_float: - return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_Agent_unsignedByte: - return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Agent_unsignedInt: - return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition: - return soap_out_KMS_Agent__AuditLogCondition(soap, tag, id, (const enum KMS_Agent__AuditLogCondition *)ptr, "KMS-Agent:AuditLogCondition"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention: - return soap_out_KMS_Agent__AuditLogRetention(soap, tag, id, (const enum KMS_Agent__AuditLogRetention *)ptr, "KMS-Agent:AuditLogRetention"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState: - return soap_out_KMS_Agent__DataUnitState(soap, tag, id, (const enum KMS_Agent__DataUnitState *)ptr, "KMS-Agent:DataUnitState"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState: - return soap_out_KMS_Agent__KeyState(soap, tag, id, (const enum KMS_Agent__KeyState *)ptr, "KMS-Agent:KeyState"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType: - return soap_out_KMS_Agent__KeyType(soap, tag, id, (const enum KMS_Agent__KeyType *)ptr, "KMS-Agent:KeyType"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator: - return soap_out_KMS_Agent__FilterOperator(soap, tag, id, (const enum KMS_Agent__FilterOperator *)ptr, "KMS-Agent:FilterOperator"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder: - return soap_out_KMS_Agent__SortOrder(soap, tag, id, (const enum KMS_Agent__SortOrder *)ptr, "KMS-Agent:SortOrder"); - case SOAP_TYPE_KMS_Agent_xsd__boolean: - return soap_out_xsd__boolean(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_Agent_bool: - return soap_out_bool(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK: - return soap_out_KMS_Agent__RegisterAgentKWK(soap, tag, id, (const struct KMS_Agent__RegisterAgentKWK *)ptr, "KMS-Agent:RegisterAgentKWK"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse: - return soap_out_KMS_Agent__RegisterAgentKWKResponse(soap, tag, id, (const struct KMS_Agent__RegisterAgentKWKResponse *)ptr, "KMS-Agent:RegisterAgentKWKResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey: - return soap_out_KMS_Agent__GetAgentKWKPublicKey(soap, tag, id, (const struct KMS_Agent__GetAgentKWKPublicKey *)ptr, "KMS-Agent:GetAgentKWKPublicKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse: - return soap_out_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, tag, id, (const struct KMS_Agent__GetAgentKWKPublicKeyResponse *)ptr, "KMS-Agent:GetAgentKWKPublicKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog: - return soap_out_KMS_Agent__CreateAuditLog(soap, tag, id, (const struct KMS_Agent__CreateAuditLog *)ptr, "KMS-Agent:CreateAuditLog"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse: - return soap_out_KMS_Agent__CreateAuditLogResponse(soap, tag, id, (const struct KMS_Agent__CreateAuditLogResponse *)ptr, "KMS-Agent:CreateAuditLogResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2: - return soap_out_KMS_Agent__RetrieveProtectAndProcessKey2(soap, tag, id, (const struct KMS_Agent__RetrieveProtectAndProcessKey2 *)ptr, "KMS-Agent:RetrieveProtectAndProcessKey2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response: - return soap_out_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, tag, id, (const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *)ptr, "KMS-Agent:RetrieveProtectAndProcessKey2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey: - return soap_out_KMS_Agent__RetrieveProtectAndProcessKey(soap, tag, id, (const struct KMS_Agent__RetrieveProtectAndProcessKey *)ptr, "KMS-Agent:RetrieveProtectAndProcessKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse: - return soap_out_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, tag, id, (const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *)ptr, "KMS-Agent:RetrieveProtectAndProcessKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2: - return soap_out_KMS_Agent__RetrieveDataUnitKeys2(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitKeys2 *)ptr, "KMS-Agent:RetrieveDataUnitKeys2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response: - return soap_out_KMS_Agent__RetrieveDataUnitKeys2Response(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitKeys2Response *)ptr, "KMS-Agent:RetrieveDataUnitKeys2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys: - return soap_out_KMS_Agent__RetrieveDataUnitKeys(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitKeys *)ptr, "KMS-Agent:RetrieveDataUnitKeys"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse: - return soap_out_KMS_Agent__RetrieveDataUnitKeysResponse(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitKeysResponse *)ptr, "KMS-Agent:RetrieveDataUnitKeysResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2: - return soap_out_KMS_Agent__RetrieveKey2(soap, tag, id, (const struct KMS_Agent__RetrieveKey2 *)ptr, "KMS-Agent:RetrieveKey2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response: - return soap_out_KMS_Agent__RetrieveKey2Response(soap, tag, id, (const struct KMS_Agent__RetrieveKey2Response *)ptr, "KMS-Agent:RetrieveKey2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey: - return soap_out_KMS_Agent__RetrieveKey(soap, tag, id, (const struct KMS_Agent__RetrieveKey *)ptr, "KMS-Agent:RetrieveKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse: - return soap_out_KMS_Agent__RetrieveKeyResponse(soap, tag, id, (const struct KMS_Agent__RetrieveKeyResponse *)ptr, "KMS-Agent:RetrieveKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2: - return soap_out_KMS_Agent__CreateKey2(soap, tag, id, (const struct KMS_Agent__CreateKey2 *)ptr, "KMS-Agent:CreateKey2"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response: - return soap_out_KMS_Agent__CreateKey2Response(soap, tag, id, (const struct KMS_Agent__CreateKey2Response *)ptr, "KMS-Agent:CreateKey2Response"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey: - return soap_out_KMS_Agent__CreateKey(soap, tag, id, (const struct KMS_Agent__CreateKey *)ptr, "KMS-Agent:CreateKey"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse: - return soap_out_KMS_Agent__CreateKeyResponse(soap, tag, id, (const struct KMS_Agent__CreateKeyResponse *)ptr, "KMS-Agent:CreateKeyResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys: - return soap_out_KMS_Agent__DisassociateDataUnitKeys(soap, tag, id, (const struct KMS_Agent__DisassociateDataUnitKeys *)ptr, "KMS-Agent:DisassociateDataUnitKeys"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse: - return soap_out_KMS_Agent__DisassociateDataUnitKeysResponse(soap, tag, id, (const struct KMS_Agent__DisassociateDataUnitKeysResponse *)ptr, "KMS-Agent:DisassociateDataUnitKeysResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID: - return soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *)ptr, "KMS-Agent:RetrieveDataUnitByExternalUniqueID"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse: - return soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *)ptr, "KMS-Agent:RetrieveDataUnitByExternalUniqueIDResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit: - return soap_out_KMS_Agent__RetrieveDataUnit(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnit *)ptr, "KMS-Agent:RetrieveDataUnit"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse: - return soap_out_KMS_Agent__RetrieveDataUnitResponse(soap, tag, id, (const struct KMS_Agent__RetrieveDataUnitResponse *)ptr, "KMS-Agent:RetrieveDataUnitResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit: - return soap_out_KMS_Agent__CreateDataUnit(soap, tag, id, (const struct KMS_Agent__CreateDataUnit *)ptr, "KMS-Agent:CreateDataUnit"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse: - return soap_out_KMS_Agent__CreateDataUnitResponse(soap, tag, id, (const struct KMS_Agent__CreateDataUnitResponse *)ptr, "KMS-Agent:CreateDataUnitResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups: - return soap_out_KMS_Agent__ListKeyGroups(soap, tag, id, (const struct KMS_Agent__ListKeyGroups *)ptr, "KMS-Agent:ListKeyGroups"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse: - return soap_out_KMS_Agent__ListKeyGroupsResponse(soap, tag, id, (const struct KMS_Agent__ListKeyGroupsResponse *)ptr, "KMS-Agent:ListKeyGroupsResponse"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit: - return soap_out_KMS_Agent__DataUnit(soap, tag, id, (const struct KMS_Agent__DataUnit *)ptr, "KMS-Agent:DataUnit"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys: - return soap_out_KMS_Agent__ArrayOfKeys(soap, tag, id, (const struct KMS_Agent__ArrayOfKeys *)ptr, "KMS-Agent:ArrayOfKeys"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__Key: - return soap_out_KMS_Agent__Key(soap, tag, id, (const struct KMS_Agent__Key *)ptr, "KMS-Agent:Key"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups: - return soap_out_KMS_Agent__ArrayOfKeyGroups(soap, tag, id, (const struct KMS_Agent__ArrayOfKeyGroups *)ptr, "KMS-Agent:ArrayOfKeyGroups"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup: - return soap_out_KMS_Agent__KeyGroup(soap, tag, id, (const struct KMS_Agent__KeyGroup *)ptr, "KMS-Agent:KeyGroup"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters: - return soap_out_KMS_Agent__QueryParameters(soap, tag, id, (const struct KMS_Agent__QueryParameters *)ptr, "KMS-Agent:QueryParameters"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters: - return soap_out_KMS_Agent__ArrayOfFilterParameters(soap, tag, id, (const struct KMS_Agent__ArrayOfFilterParameters *)ptr, "KMS-Agent:ArrayOfFilterParameters"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters: - return soap_out_KMS_Agent__FilterParameters(soap, tag, id, (const struct KMS_Agent__FilterParameters *)ptr, "KMS-Agent:FilterParameters"); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary: - return soap_out_KMS_Agent__ArrayOfHexBinary(soap, tag, id, (const struct KMS_Agent__ArrayOfHexBinary *)ptr, "KMS-Agent:ArrayOfHexBinary"); - case SOAP_TYPE_KMS_Agent_xsd__hexBinary: - return soap_out_xsd__hexBinary(soap, tag, id, (const struct xsd__hexBinary *)ptr, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__Key: - return soap_out_PointerToKMS_Agent__Key(soap, tag, id, (struct KMS_Agent__Key *const*)ptr, "KMS-Agent:Key"); - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__KeyGroup: - return soap_out_PointerToKMS_Agent__KeyGroup(soap, tag, id, (struct KMS_Agent__KeyGroup *const*)ptr, "KMS-Agent:KeyGroup"); - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__FilterParameters: - return soap_out_PointerToKMS_Agent__FilterParameters(soap, tag, id, (struct KMS_Agent__FilterParameters *const*)ptr, "KMS-Agent:FilterParameters"); - case SOAP_TYPE_KMS_Agent_PointerToxsd__hexBinary: - return soap_out_PointerToxsd__hexBinary(soap, tag, id, (struct xsd__hexBinary *const*)ptr, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Agent_PointerTounsignedByte: - return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Agent_xsd__duration: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:duration"); - case SOAP_TYPE_KMS_Agent_xsd__dateTime: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:dateTime"); - case SOAP_TYPE_KMS_Agent_xsd__string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - case SOAP_TYPE_KMS_Agent__QName: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); - case SOAP_TYPE_KMS_Agent_string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - } - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) -{ - (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ - switch (type) - { - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK: - soap_serialize_KMS_Agent__RegisterAgentKWK(soap, (const struct KMS_Agent__RegisterAgentKWK *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse: - soap_serialize_KMS_Agent__RegisterAgentKWKResponse(soap, (const struct KMS_Agent__RegisterAgentKWKResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey: - soap_serialize_KMS_Agent__GetAgentKWKPublicKey(soap, (const struct KMS_Agent__GetAgentKWKPublicKey *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse: - soap_serialize_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, (const struct KMS_Agent__GetAgentKWKPublicKeyResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog: - soap_serialize_KMS_Agent__CreateAuditLog(soap, (const struct KMS_Agent__CreateAuditLog *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse: - soap_serialize_KMS_Agent__CreateAuditLogResponse(soap, (const struct KMS_Agent__CreateAuditLogResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2: - soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2(soap, (const struct KMS_Agent__RetrieveProtectAndProcessKey2 *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response: - soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, (const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey: - soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey(soap, (const struct KMS_Agent__RetrieveProtectAndProcessKey *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse: - soap_serialize_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, (const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2: - soap_serialize_KMS_Agent__RetrieveDataUnitKeys2(soap, (const struct KMS_Agent__RetrieveDataUnitKeys2 *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response: - soap_serialize_KMS_Agent__RetrieveDataUnitKeys2Response(soap, (const struct KMS_Agent__RetrieveDataUnitKeys2Response *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys: - soap_serialize_KMS_Agent__RetrieveDataUnitKeys(soap, (const struct KMS_Agent__RetrieveDataUnitKeys *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse: - soap_serialize_KMS_Agent__RetrieveDataUnitKeysResponse(soap, (const struct KMS_Agent__RetrieveDataUnitKeysResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2: - soap_serialize_KMS_Agent__RetrieveKey2(soap, (const struct KMS_Agent__RetrieveKey2 *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response: - soap_serialize_KMS_Agent__RetrieveKey2Response(soap, (const struct KMS_Agent__RetrieveKey2Response *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey: - soap_serialize_KMS_Agent__RetrieveKey(soap, (const struct KMS_Agent__RetrieveKey *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse: - soap_serialize_KMS_Agent__RetrieveKeyResponse(soap, (const struct KMS_Agent__RetrieveKeyResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2: - soap_serialize_KMS_Agent__CreateKey2(soap, (const struct KMS_Agent__CreateKey2 *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response: - soap_serialize_KMS_Agent__CreateKey2Response(soap, (const struct KMS_Agent__CreateKey2Response *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey: - soap_serialize_KMS_Agent__CreateKey(soap, (const struct KMS_Agent__CreateKey *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse: - soap_serialize_KMS_Agent__CreateKeyResponse(soap, (const struct KMS_Agent__CreateKeyResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys: - soap_serialize_KMS_Agent__DisassociateDataUnitKeys(soap, (const struct KMS_Agent__DisassociateDataUnitKeys *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse: - soap_serialize_KMS_Agent__DisassociateDataUnitKeysResponse(soap, (const struct KMS_Agent__DisassociateDataUnitKeysResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID: - soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, (const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse: - soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, (const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit: - soap_serialize_KMS_Agent__RetrieveDataUnit(soap, (const struct KMS_Agent__RetrieveDataUnit *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse: - soap_serialize_KMS_Agent__RetrieveDataUnitResponse(soap, (const struct KMS_Agent__RetrieveDataUnitResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit: - soap_serialize_KMS_Agent__CreateDataUnit(soap, (const struct KMS_Agent__CreateDataUnit *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse: - soap_serialize_KMS_Agent__CreateDataUnitResponse(soap, (const struct KMS_Agent__CreateDataUnitResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups: - soap_serialize_KMS_Agent__ListKeyGroups(soap, (const struct KMS_Agent__ListKeyGroups *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse: - soap_serialize_KMS_Agent__ListKeyGroupsResponse(soap, (const struct KMS_Agent__ListKeyGroupsResponse *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit: - soap_serialize_KMS_Agent__DataUnit(soap, (const struct KMS_Agent__DataUnit *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys: - soap_serialize_KMS_Agent__ArrayOfKeys(soap, (const struct KMS_Agent__ArrayOfKeys *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__Key: - soap_serialize_KMS_Agent__Key(soap, (const struct KMS_Agent__Key *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups: - soap_serialize_KMS_Agent__ArrayOfKeyGroups(soap, (const struct KMS_Agent__ArrayOfKeyGroups *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup: - soap_serialize_KMS_Agent__KeyGroup(soap, (const struct KMS_Agent__KeyGroup *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters: - soap_serialize_KMS_Agent__QueryParameters(soap, (const struct KMS_Agent__QueryParameters *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters: - soap_serialize_KMS_Agent__ArrayOfFilterParameters(soap, (const struct KMS_Agent__ArrayOfFilterParameters *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters: - soap_serialize_KMS_Agent__FilterParameters(soap, (const struct KMS_Agent__FilterParameters *)ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary: - soap_serialize_KMS_Agent__ArrayOfHexBinary(soap, (const struct KMS_Agent__ArrayOfHexBinary *)ptr); - break; - case SOAP_TYPE_KMS_Agent_xsd__hexBinary: - soap_serialize_xsd__hexBinary(soap, (const struct xsd__hexBinary *)ptr); - break; - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__Key: - soap_serialize_PointerToKMS_Agent__Key(soap, (struct KMS_Agent__Key *const*)ptr); - break; - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__KeyGroup: - soap_serialize_PointerToKMS_Agent__KeyGroup(soap, (struct KMS_Agent__KeyGroup *const*)ptr); - break; - case SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__FilterParameters: - soap_serialize_PointerToKMS_Agent__FilterParameters(soap, (struct KMS_Agent__FilterParameters *const*)ptr); - break; - case SOAP_TYPE_KMS_Agent_PointerToxsd__hexBinary: - soap_serialize_PointerToxsd__hexBinary(soap, (struct xsd__hexBinary *const*)ptr); - break; - case SOAP_TYPE_KMS_Agent_PointerTounsignedByte: - soap_serialize_PointerTounsignedByte(soap, (unsigned char *const*)ptr); - break; - case SOAP_TYPE_KMS_Agent_xsd__duration: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Agent_xsd__dateTime: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Agent_xsd__string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Agent__QName: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Agent_string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - } -} -#endif - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) -{ - switch (t) - { - case SOAP_TYPE_KMS_Agent_xsd__hexBinary: - return (void*)soap_instantiate_xsd__hexBinary(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary: - return (void*)soap_instantiate_KMS_Agent__ArrayOfHexBinary(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters: - return (void*)soap_instantiate_KMS_Agent__FilterParameters(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters: - return (void*)soap_instantiate_KMS_Agent__ArrayOfFilterParameters(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters: - return (void*)soap_instantiate_KMS_Agent__QueryParameters(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup: - return (void*)soap_instantiate_KMS_Agent__KeyGroup(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups: - return (void*)soap_instantiate_KMS_Agent__ArrayOfKeyGroups(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__Key: - return (void*)soap_instantiate_KMS_Agent__Key(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys: - return (void*)soap_instantiate_KMS_Agent__ArrayOfKeys(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit: - return (void*)soap_instantiate_KMS_Agent__DataUnit(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse: - return (void*)soap_instantiate_KMS_Agent__ListKeyGroupsResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups: - return (void*)soap_instantiate_KMS_Agent__ListKeyGroups(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse: - return (void*)soap_instantiate_KMS_Agent__CreateDataUnitResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit: - return (void*)soap_instantiate_KMS_Agent__CreateDataUnit(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnit(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse: - return (void*)soap_instantiate_KMS_Agent__DisassociateDataUnitKeysResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys: - return (void*)soap_instantiate_KMS_Agent__DisassociateDataUnitKeys(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse: - return (void*)soap_instantiate_KMS_Agent__CreateKeyResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey: - return (void*)soap_instantiate_KMS_Agent__CreateKey(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response: - return (void*)soap_instantiate_KMS_Agent__CreateKey2Response(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2: - return (void*)soap_instantiate_KMS_Agent__CreateKey2(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse: - return (void*)soap_instantiate_KMS_Agent__RetrieveKeyResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey: - return (void*)soap_instantiate_KMS_Agent__RetrieveKey(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response: - return (void*)soap_instantiate_KMS_Agent__RetrieveKey2Response(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2: - return (void*)soap_instantiate_KMS_Agent__RetrieveKey2(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitKeysResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitKeys(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2Response(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2: - return (void*)soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse: - return (void*)soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey: - return (void*)soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response: - return (void*)soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2: - return (void*)soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse: - return (void*)soap_instantiate_KMS_Agent__CreateAuditLogResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog: - return (void*)soap_instantiate_KMS_Agent__CreateAuditLog(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse: - return (void*)soap_instantiate_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey: - return (void*)soap_instantiate_KMS_Agent__GetAgentKWKPublicKey(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse: - return (void*)soap_instantiate_KMS_Agent__RegisterAgentKWKResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK: - return (void*)soap_instantiate_KMS_Agent__RegisterAgentKWK(soap, -1, type, arrayType, n); -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Header: - return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Code: - return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail: - return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason: - return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault: - return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); -#endif - } - return NULL; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) -{ switch (p->type) - { - case SOAP_TYPE_KMS_Agent_xsd__hexBinary: - if (p->size < 0) - SOAP_DELETE((struct xsd__hexBinary*)p->ptr); - else - SOAP_DELETE_ARRAY((struct xsd__hexBinary*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__ArrayOfHexBinary*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__ArrayOfHexBinary*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__FilterParameters*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__FilterParameters*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__ArrayOfFilterParameters*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__ArrayOfFilterParameters*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__QueryParameters*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__QueryParameters*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__KeyGroup*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__KeyGroup*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__ArrayOfKeyGroups*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__ArrayOfKeyGroups*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__Key: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__Key*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__Key*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__ArrayOfKeys*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__ArrayOfKeys*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__DataUnit*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__DataUnit*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__ListKeyGroupsResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__ListKeyGroupsResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__ListKeyGroups*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__ListKeyGroups*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateDataUnitResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateDataUnitResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateDataUnit*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateDataUnit*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnit*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnit*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitByExternalUniqueID*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitByExternalUniqueID*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__DisassociateDataUnitKeysResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__DisassociateDataUnitKeysResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__DisassociateDataUnitKeys*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__DisassociateDataUnitKeys*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateKeyResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateKeyResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateKey*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateKey*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateKey2Response*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateKey2Response*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateKey2*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateKey2*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveKeyResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveKeyResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveKey*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveKey*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveKey2Response*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveKey2Response*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveKey2*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveKey2*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitKeysResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitKeysResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitKeys*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitKeys*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitKeys2Response*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitKeys2Response*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveDataUnitKeys2*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveDataUnitKeys2*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveProtectAndProcessKeyResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveProtectAndProcessKeyResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveProtectAndProcessKey*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveProtectAndProcessKey*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveProtectAndProcessKey2Response*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveProtectAndProcessKey2Response*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RetrieveProtectAndProcessKey2*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RetrieveProtectAndProcessKey2*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateAuditLogResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateAuditLogResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__CreateAuditLog*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__CreateAuditLog*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__GetAgentKWKPublicKeyResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__GetAgentKWKPublicKeyResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__GetAgentKWKPublicKey*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__GetAgentKWKPublicKey*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RegisterAgentKWKResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RegisterAgentKWKResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK: - if (p->size < 0) - SOAP_DELETE((struct KMS_Agent__RegisterAgentKWK*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Agent__RegisterAgentKWK*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Header: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Code: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); - break; - case SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); - break; - default: return SOAP_ERR; - } - return SOAP_OK; -} - -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) -{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_byte - *a = SOAP_DEFAULT_byte; -#else - *a = (char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) -{ - return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_byte); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) -{ char *p; - p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_KMS_Agent_byte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_byte); - if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) -{ - if ((p = soap_in_byte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_int - *a = SOAP_DEFAULT_int; -#else - *a = (int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) -{ - return soap_outint(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_int); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) -{ int *p; - p = soap_inint(soap, tag, a, type, SOAP_TYPE_KMS_Agent_int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_int); - if (soap_out_int(soap, tag?tag:"int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) -{ - if ((p = soap_in_int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_xsd__int); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_Agent_xsd__int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__int); - if (soap_out_xsd__int(soap, tag?tag:"xsd:int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap *soap, long *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_long - *a = SOAP_DEFAULT_long; -#else - *a = (long)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_long); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_Agent_long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_long); - if (soap_out_long(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_xsd__long); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_Agent_xsd__long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__long); - if (soap_out_xsd__long(soap, tag?tag:"xsd:long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap *soap, LONG64 *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_LONG64 - *a = SOAP_DEFAULT_LONG64; -#else - *a = (LONG64)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_LONG64); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_Agent_LONG64); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_LONG64); - if (soap_out_LONG64(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_LONG64(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_xsd__float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_Agent_xsd__float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__float); - if (soap_out_xsd__float(soap, tag?tag:"xsd:float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap *soap, float *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_float - *a = SOAP_DEFAULT_float; -#else - *a = (float)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_Agent_float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_float); - if (soap_out_float(soap, tag?tag:"float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap *soap, unsigned char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedByte - *a = SOAP_DEFAULT_unsignedByte; -#else - *a = (unsigned char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) -{ - return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_unsignedByte); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) -{ unsigned char *p; - p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_KMS_Agent_unsignedByte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_unsignedByte); - if (soap_out_unsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap *soap, unsigned int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedInt - *a = SOAP_DEFAULT_unsignedInt; -#else - *a = (unsigned int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *a, const char *type) -{ - return soap_outunsignedInt(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_unsignedInt); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap *soap, const char *tag, unsigned int *a, const char *type) -{ unsigned int *p; - p = soap_inunsignedInt(soap, tag, a, type, SOAP_TYPE_KMS_Agent_unsignedInt); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap *soap, const unsigned int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_unsignedInt); - if (soap_out_unsignedInt(soap, tag?tag:"unsignedInt", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap *soap, unsigned int *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedInt(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__AuditLogCondition(struct soap *soap, enum KMS_Agent__AuditLogCondition *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__AuditLogCondition - *a = SOAP_DEFAULT_KMS_Agent__AuditLogCondition; -#else - *a = (enum KMS_Agent__AuditLogCondition)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__AuditLogCondition[] = -{ { (long)AUDIT_LOG_SUCCESS_CONDITION, "AUDIT-LOG-SUCCESS-CONDITION" }, - { (long)AUDIT_LOG_ERROR_CONDITION, "AUDIT-LOG-ERROR-CONDITION" }, - { (long)AUDIT_LOG_WARNING_CONDITION, "AUDIT-LOG-WARNING-CONDITION" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__AuditLogCondition2s(struct soap *soap, enum KMS_Agent__AuditLogCondition n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__AuditLogCondition, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__AuditLogCondition(struct soap *soap, const char *tag, int id, const enum KMS_Agent__AuditLogCondition *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition), type) || soap_send(soap, soap_KMS_Agent__AuditLogCondition2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__AuditLogCondition(struct soap *soap, const char *s, enum KMS_Agent__AuditLogCondition *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__AuditLogCondition, s); - if (map) - *a = (enum KMS_Agent__AuditLogCondition)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 2))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__AuditLogCondition)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__AuditLogCondition * SOAP_FMAC4 soap_in_KMS_Agent__AuditLogCondition(struct soap *soap, const char *tag, enum KMS_Agent__AuditLogCondition *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__AuditLogCondition *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition, sizeof(enum KMS_Agent__AuditLogCondition), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__AuditLogCondition(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__AuditLogCondition *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition, 0, sizeof(enum KMS_Agent__AuditLogCondition), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__AuditLogCondition(struct soap *soap, const enum KMS_Agent__AuditLogCondition *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition); - if (soap_out_KMS_Agent__AuditLogCondition(soap, tag?tag:"KMS-Agent:AuditLogCondition", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__AuditLogCondition * SOAP_FMAC4 soap_get_KMS_Agent__AuditLogCondition(struct soap *soap, enum KMS_Agent__AuditLogCondition *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__AuditLogCondition(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__AuditLogRetention(struct soap *soap, enum KMS_Agent__AuditLogRetention *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__AuditLogRetention - *a = SOAP_DEFAULT_KMS_Agent__AuditLogRetention; -#else - *a = (enum KMS_Agent__AuditLogRetention)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__AuditLogRetention[] = -{ { (long)AUDIT_LOG_LONG_TERM_RETENTION, "AUDIT-LOG-LONG-TERM-RETENTION" }, - { (long)AUDIT_LOG_MEDIUM_TERM_RETENTION, "AUDIT-LOG-MEDIUM-TERM-RETENTION" }, - { (long)AUDIT_LOG_SHORT_TERM_RETENTION, "AUDIT-LOG-SHORT-TERM-RETENTION" }, - { (long)AUDIT_LOG_ZERO_RETENTION, "AUDIT-LOG-ZERO-RETENTION" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__AuditLogRetention2s(struct soap *soap, enum KMS_Agent__AuditLogRetention n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__AuditLogRetention, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__AuditLogRetention(struct soap *soap, const char *tag, int id, const enum KMS_Agent__AuditLogRetention *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention), type) || soap_send(soap, soap_KMS_Agent__AuditLogRetention2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__AuditLogRetention(struct soap *soap, const char *s, enum KMS_Agent__AuditLogRetention *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__AuditLogRetention, s); - if (map) - *a = (enum KMS_Agent__AuditLogRetention)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 3))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__AuditLogRetention)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__AuditLogRetention * SOAP_FMAC4 soap_in_KMS_Agent__AuditLogRetention(struct soap *soap, const char *tag, enum KMS_Agent__AuditLogRetention *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__AuditLogRetention *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention, sizeof(enum KMS_Agent__AuditLogRetention), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__AuditLogRetention(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__AuditLogRetention *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention, 0, sizeof(enum KMS_Agent__AuditLogRetention), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__AuditLogRetention(struct soap *soap, const enum KMS_Agent__AuditLogRetention *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention); - if (soap_out_KMS_Agent__AuditLogRetention(soap, tag?tag:"KMS-Agent:AuditLogRetention", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__AuditLogRetention * SOAP_FMAC4 soap_get_KMS_Agent__AuditLogRetention(struct soap *soap, enum KMS_Agent__AuditLogRetention *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__AuditLogRetention(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DataUnitState(struct soap *soap, enum KMS_Agent__DataUnitState *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__DataUnitState - *a = SOAP_DEFAULT_KMS_Agent__DataUnitState; -#else - *a = (enum KMS_Agent__DataUnitState)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__DataUnitState[] = -{ { (long)DATA_UNIT_STATE_NO_KEY, "DATA-UNIT-STATE-NO-KEY" }, - { (long)DATA_UNIT_STATE_READABLE_NORMAL, "DATA-UNIT-STATE-READABLE-NORMAL" }, - { (long)DATA_UNIT_STATE_READABLE_NEEDS_REKEY, "DATA-UNIT-STATE-READABLE-NEEDS-REKEY" }, - { (long)DATA_UNIT_STATE_SHREDDED, "DATA-UNIT-STATE-SHREDDED" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__DataUnitState2s(struct soap *soap, enum KMS_Agent__DataUnitState n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__DataUnitState, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DataUnitState(struct soap *soap, const char *tag, int id, const enum KMS_Agent__DataUnitState *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState), type) || soap_send(soap, soap_KMS_Agent__DataUnitState2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__DataUnitState(struct soap *soap, const char *s, enum KMS_Agent__DataUnitState *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__DataUnitState, s); - if (map) - *a = (enum KMS_Agent__DataUnitState)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 3))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__DataUnitState)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__DataUnitState * SOAP_FMAC4 soap_in_KMS_Agent__DataUnitState(struct soap *soap, const char *tag, enum KMS_Agent__DataUnitState *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__DataUnitState *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState, sizeof(enum KMS_Agent__DataUnitState), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__DataUnitState(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__DataUnitState *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState, 0, sizeof(enum KMS_Agent__DataUnitState), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DataUnitState(struct soap *soap, const enum KMS_Agent__DataUnitState *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState); - if (soap_out_KMS_Agent__DataUnitState(soap, tag?tag:"KMS-Agent:DataUnitState", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__DataUnitState * SOAP_FMAC4 soap_get_KMS_Agent__DataUnitState(struct soap *soap, enum KMS_Agent__DataUnitState *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__DataUnitState(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__KeyState(struct soap *soap, enum KMS_Agent__KeyState *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__KeyState - *a = SOAP_DEFAULT_KMS_Agent__KeyState; -#else - *a = (enum KMS_Agent__KeyState)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__KeyState[] = -{ { (long)KEY_STATE_GENERATED, "KEY-STATE-GENERATED" }, - { (long)KEY_STATE_READY, "KEY-STATE-READY" }, - { (long)KEY_STATE_PROTECT_AND_PROCESS, "KEY-STATE-PROTECT-AND-PROCESS" }, - { (long)KEY_STATE_PROCESS_ONLY, "KEY-STATE-PROCESS-ONLY" }, - { (long)KEY_STATE_DEACTIVATED, "KEY-STATE-DEACTIVATED" }, - { (long)KEY_STATE_COMPROMISED, "KEY-STATE-COMPROMISED" }, - { (long)KEY_STATE_DESTROYED_INCOMPLETE, "KEY-STATE-DESTROYED-INCOMPLETE" }, - { (long)KEY_STATE_DESTROYED_COMPLETE, "KEY-STATE-DESTROYED-COMPLETE" }, - { (long)KEY_STATE_DESTROYED_COMPROMISED_INCOMPLETE, "KEY-STATE-DESTROYED-COMPROMISED-INCOMPLETE" }, - { (long)KEY_STATE_DESTROYED_COMPROMISED_COMPLETE, "KEY-STATE-DESTROYED-COMPROMISED-COMPLETE" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__KeyState2s(struct soap *soap, enum KMS_Agent__KeyState n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__KeyState, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__KeyState(struct soap *soap, const char *tag, int id, const enum KMS_Agent__KeyState *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState), type) || soap_send(soap, soap_KMS_Agent__KeyState2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__KeyState(struct soap *soap, const char *s, enum KMS_Agent__KeyState *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__KeyState, s); - if (map) - *a = (enum KMS_Agent__KeyState)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 9))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__KeyState)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__KeyState * SOAP_FMAC4 soap_in_KMS_Agent__KeyState(struct soap *soap, const char *tag, enum KMS_Agent__KeyState *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__KeyState *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState, sizeof(enum KMS_Agent__KeyState), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__KeyState(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__KeyState *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState, 0, sizeof(enum KMS_Agent__KeyState), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__KeyState(struct soap *soap, const enum KMS_Agent__KeyState *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState); - if (soap_out_KMS_Agent__KeyState(soap, tag?tag:"KMS-Agent:KeyState", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__KeyState * SOAP_FMAC4 soap_get_KMS_Agent__KeyState(struct soap *soap, enum KMS_Agent__KeyState *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__KeyState(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__KeyType(struct soap *soap, enum KMS_Agent__KeyType *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__KeyType - *a = SOAP_DEFAULT_KMS_Agent__KeyType; -#else - *a = (enum KMS_Agent__KeyType)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__KeyType[] = -{ { (long)KEY_TYPE_AES_256, "KEY-TYPE-AES-256" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__KeyType2s(struct soap *soap, enum KMS_Agent__KeyType n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__KeyType, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__KeyType(struct soap *soap, const char *tag, int id, const enum KMS_Agent__KeyType *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType), type) || soap_send(soap, soap_KMS_Agent__KeyType2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__KeyType(struct soap *soap, const char *s, enum KMS_Agent__KeyType *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__KeyType, s); - if (map) - *a = (enum KMS_Agent__KeyType)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 0))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__KeyType)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__KeyType * SOAP_FMAC4 soap_in_KMS_Agent__KeyType(struct soap *soap, const char *tag, enum KMS_Agent__KeyType *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__KeyType *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType, sizeof(enum KMS_Agent__KeyType), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__KeyType(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__KeyType *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType, 0, sizeof(enum KMS_Agent__KeyType), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__KeyType(struct soap *soap, const enum KMS_Agent__KeyType *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType); - if (soap_out_KMS_Agent__KeyType(soap, tag?tag:"KMS-Agent:KeyType", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__KeyType * SOAP_FMAC4 soap_get_KMS_Agent__KeyType(struct soap *soap, enum KMS_Agent__KeyType *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__KeyType(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__FilterOperator(struct soap *soap, enum KMS_Agent__FilterOperator *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__FilterOperator - *a = SOAP_DEFAULT_KMS_Agent__FilterOperator; -#else - *a = (enum KMS_Agent__FilterOperator)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__FilterOperator[] = -{ { (long)FILTER_OPERATOR_EQUAL, "FILTER-OPERATOR-EQUAL" }, - { (long)FILTER_OPERATOR_NOT_EQUAL, "FILTER-OPERATOR-NOT-EQUAL" }, - { (long)FILTER_OPERATOR_GREATER_THAN, "FILTER-OPERATOR-GREATER-THAN" }, - { (long)FILTER_OPERATOR_LESS_THAN, "FILTER-OPERATOR-LESS-THAN" }, - { (long)FILTER_OPERATOR_GREATER_THAN_OR_EQUAL, "FILTER-OPERATOR-GREATER-THAN-OR-EQUAL" }, - { (long)FILTER_OPERATOR_LESS_THAN_OR_EQUAL, "FILTER-OPERATOR-LESS-THAN-OR-EQUAL" }, - { (long)FILTER_OPERATOR_STARTS_WITH, "FILTER-OPERATOR-STARTS-WITH" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__FilterOperator2s(struct soap *soap, enum KMS_Agent__FilterOperator n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__FilterOperator, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__FilterOperator(struct soap *soap, const char *tag, int id, const enum KMS_Agent__FilterOperator *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator), type) || soap_send(soap, soap_KMS_Agent__FilterOperator2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__FilterOperator(struct soap *soap, const char *s, enum KMS_Agent__FilterOperator *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__FilterOperator, s); - if (map) - *a = (enum KMS_Agent__FilterOperator)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 6))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__FilterOperator)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__FilterOperator * SOAP_FMAC4 soap_in_KMS_Agent__FilterOperator(struct soap *soap, const char *tag, enum KMS_Agent__FilterOperator *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__FilterOperator *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator, sizeof(enum KMS_Agent__FilterOperator), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__FilterOperator(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__FilterOperator *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator, 0, sizeof(enum KMS_Agent__FilterOperator), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__FilterOperator(struct soap *soap, const enum KMS_Agent__FilterOperator *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator); - if (soap_out_KMS_Agent__FilterOperator(soap, tag?tag:"KMS-Agent:FilterOperator", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__FilterOperator * SOAP_FMAC4 soap_get_KMS_Agent__FilterOperator(struct soap *soap, enum KMS_Agent__FilterOperator *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__FilterOperator(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__SortOrder(struct soap *soap, enum KMS_Agent__SortOrder *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_KMS_Agent__SortOrder - *a = SOAP_DEFAULT_KMS_Agent__SortOrder; -#else - *a = (enum KMS_Agent__SortOrder)0; -#endif -} - -static const struct soap_code_map soap_codes_KMS_Agent__SortOrder[] = -{ { (long)SORT_ORDER_ASCENDING, "SORT-ORDER-ASCENDING" }, - { (long)SORT_ORDER_DESCENDING, "SORT-ORDER-DESCENDING" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__SortOrder2s(struct soap *soap, enum KMS_Agent__SortOrder n) -{ const char *s = soap_code_str(soap_codes_KMS_Agent__SortOrder, (long)n); - if (s) - return s; - return soap_long2s(soap, (long)n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__SortOrder(struct soap *soap, const char *tag, int id, const enum KMS_Agent__SortOrder *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder), type) || soap_send(soap, soap_KMS_Agent__SortOrder2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__SortOrder(struct soap *soap, const char *s, enum KMS_Agent__SortOrder *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_KMS_Agent__SortOrder, s); - if (map) - *a = (enum KMS_Agent__SortOrder)map->code; - else - { long n; - if (soap_s2long(soap, s, &n) || ((soap->mode & SOAP_XML_STRICT) && (n < 0 || n > 1))) - return soap->error = SOAP_TYPE; - *a = (enum KMS_Agent__SortOrder)n; - } - return SOAP_OK; -} - -SOAP_FMAC3 enum KMS_Agent__SortOrder * SOAP_FMAC4 soap_in_KMS_Agent__SortOrder(struct soap *soap, const char *tag, enum KMS_Agent__SortOrder *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (enum KMS_Agent__SortOrder *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder, sizeof(enum KMS_Agent__SortOrder), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2KMS_Agent__SortOrder(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (enum KMS_Agent__SortOrder *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder, 0, sizeof(enum KMS_Agent__SortOrder), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__SortOrder(struct soap *soap, const enum KMS_Agent__SortOrder *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder); - if (soap_out_KMS_Agent__SortOrder(soap, tag?tag:"KMS-Agent:SortOrder", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 enum KMS_Agent__SortOrder * SOAP_FMAC4 soap_get_KMS_Agent__SortOrder(struct soap *soap, enum KMS_Agent__SortOrder *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__SortOrder(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap *soap, bool n) -{ return soap_bool2s(soap, n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_xsd__boolean), type) || soap_send(soap, soap_xsd__boolean2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap *soap, const char *s, bool *a) -{ - return soap_s2bool(soap, s, a); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_xsd__boolean, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2xsd__boolean(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_xsd__boolean, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__boolean); - if (soap_out_xsd__boolean(soap, tag?tag:"xsd:boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__boolean(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap *soap, bool *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_bool - *a = SOAP_DEFAULT_bool; -#else - *a = (bool)0; -#endif -} - -static const struct soap_code_map soap_codes_bool[] = -{ { (long)false, "false" }, - { (long)true, "true" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap *soap, bool n) -{ - (void)soap; /* appease -Wall -Werror */ -return soap_code_str(soap_codes_bool, n!=0); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_bool), type) || soap_send(soap, soap_bool2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap *soap, const char *s, bool *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_bool, s); - if (map) - *a = (bool)(map->code != 0); - else - { long n; - if (soap_s2long(soap, s, &n) || n < 0 || n > 1) - return soap->error = SOAP_TYPE; - *a = (bool)(n != 0); - } - return SOAP_OK; -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_bool, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2bool(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_bool, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_bool); - if (soap_out_bool(soap, tag?tag:"boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_bool(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->faultcode); - soap_default_string(soap, &a->faultstring); - soap_default_string(soap, &a->faultactor); - a->detail = NULL; - a->SOAP_ENV__Code = NULL; - a->SOAP_ENV__Reason = NULL; - soap_default_string(soap, &a->SOAP_ENV__Node); - soap_default_string(soap, &a->SOAP_ENV__Role); - a->SOAP_ENV__Detail = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->faultcode); - soap_serialize_string(soap, &a->faultstring); - soap_serialize_string(soap, &a->faultactor); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); - soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); - soap_serialize_string(soap, &a->SOAP_ENV__Node); - soap_serialize_string(soap, &a->SOAP_ENV__Role); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) -{ - const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault), type)) - return soap->error; - if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) - return soap->error; - if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "xsd:string")) - return soap->error; - if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "xsd:string")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) -{ - size_t soap_flag_faultcode = 1; - size_t soap_flag_faultstring = 1; - size_t soap_flag_faultactor = 1; - size_t soap_flag_detail = 1; - size_t soap_flag_SOAP_ENV__Code = 1; - size_t soap_flag_SOAP_ENV__Reason = 1; - size_t soap_flag_SOAP_ENV__Node = 1; - size_t soap_flag_SOAP_ENV__Role = 1; - size_t soap_flag_SOAP_ENV__Detail = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Fault(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) - { soap_flag_faultcode--; - continue; - } - if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) - { soap_flag_faultstring--; - continue; - } - if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) - { soap_flag_faultactor--; - continue; - } - if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) - { soap_flag_detail--; - continue; - } - if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) - { soap_flag_SOAP_ENV__Code--; - continue; - } - if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) - { soap_flag_SOAP_ENV__Reason--; - continue; - } - if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) - { soap_flag_SOAP_ENV__Node--; - continue; - } - if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) - { soap_flag_SOAP_ENV__Role--; - continue; - } - if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) - { soap_flag_SOAP_ENV__Detail--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault); - if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); - if (size) - *size = sizeof(struct SOAP_ENV__Fault); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Fault); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Fault*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); - *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason), type)) - return soap->error; - if (soap->lang) - soap_set_attr(soap, "xml:lang", soap->lang, 1); - if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Text = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Reason(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) - { soap_flag_SOAP_ENV__Text--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason); - if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); - if (size) - *size = sizeof(struct SOAP_ENV__Reason); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Reason); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Reason*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); - *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - a->__type = 0; - a->fault = NULL; - a->__any = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_markelement(soap, a->fault, a->__type); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail), type)) - return soap->error; - if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) - return soap->error; - soap_outliteral(soap, "-any", &a->__any, NULL); - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) -{ - size_t soap_flag_fault = 1; - size_t soap_flag___any = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Detail(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) - if ((a->fault = soap_getelement(soap, &a->__type))) - { soap_flag_fault = 0; - continue; - } - if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_inliteral(soap, "-any", &a->__any)) - { soap_flag___any--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail); - if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); - if (size) - *size = sizeof(struct SOAP_ENV__Detail); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Detail); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Detail*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); - *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->SOAP_ENV__Value); - a->SOAP_ENV__Subcode = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->SOAP_ENV__Value); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) -{ - const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code), type)) - return soap->error; - if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Value = 1; - size_t soap_flag_SOAP_ENV__Subcode = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Code(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) - { soap_flag_SOAP_ENV__Value--; - continue; - } - if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) - { soap_flag_SOAP_ENV__Subcode--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code); - if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); - if (size) - *size = sizeof(struct SOAP_ENV__Code); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Code); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Code*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); - *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Header), type)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Header(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_SOAP_ENV__Header); - if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_SOAP_ENV__Header, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); - if (size) - *size = sizeof(struct SOAP_ENV__Header); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Header); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Header*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); - *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RegisterAgentKWK(struct soap *soap, struct KMS_Agent__RegisterAgentKWK *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__hexBinary(soap, &a->AgentKWK); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RegisterAgentKWK(struct soap *soap, const struct KMS_Agent__RegisterAgentKWK *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->AgentKWK, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - soap_serialize_xsd__hexBinary(soap, &a->AgentKWK); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RegisterAgentKWK(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RegisterAgentKWK *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK), type)) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "AgentKWK", -1, &a->AgentKWK, "xsd:hexBinary")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWK * SOAP_FMAC4 soap_in_KMS_Agent__RegisterAgentKWK(struct soap *soap, const char *tag, struct KMS_Agent__RegisterAgentKWK *a, const char *type) -{ - size_t soap_flag_AgentKWK = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RegisterAgentKWK *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK, sizeof(struct KMS_Agent__RegisterAgentKWK), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RegisterAgentKWK(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_AgentKWK && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "AgentKWK", &a->AgentKWK, "xsd:hexBinary")) - { soap_flag_AgentKWK--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RegisterAgentKWK *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK, 0, sizeof(struct KMS_Agent__RegisterAgentKWK), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_AgentKWK > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RegisterAgentKWK(struct soap *soap, const struct KMS_Agent__RegisterAgentKWK *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK); - if (soap_out_KMS_Agent__RegisterAgentKWK(soap, tag?tag:"KMS-Agent:RegisterAgentKWK", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWK * SOAP_FMAC4 soap_get_KMS_Agent__RegisterAgentKWK(struct soap *soap, struct KMS_Agent__RegisterAgentKWK *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RegisterAgentKWK(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RegisterAgentKWK * SOAP_FMAC2 soap_instantiate_KMS_Agent__RegisterAgentKWK(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RegisterAgentKWK(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RegisterAgentKWK); - if (size) - *size = sizeof(struct KMS_Agent__RegisterAgentKWK); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RegisterAgentKWK[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RegisterAgentKWK); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RegisterAgentKWK*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RegisterAgentKWK(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RegisterAgentKWK %p -> %p\n", q, p)); - *(struct KMS_Agent__RegisterAgentKWK*)p = *(struct KMS_Agent__RegisterAgentKWK*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, struct KMS_Agent__RegisterAgentKWKResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, const struct KMS_Agent__RegisterAgentKWKResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RegisterAgentKWKResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse), type)) - return soap->error; - if (soap_out_xsd__string(soap, "AgentKWKID", -1, &a->AgentKWKID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWKResponse * SOAP_FMAC4 soap_in_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, const char *tag, struct KMS_Agent__RegisterAgentKWKResponse *a, const char *type) -{ - size_t soap_flag_AgentKWKID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RegisterAgentKWKResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse, sizeof(struct KMS_Agent__RegisterAgentKWKResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RegisterAgentKWKResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_AgentKWKID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "AgentKWKID", &a->AgentKWKID, "xsd:string")) - { soap_flag_AgentKWKID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RegisterAgentKWKResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse, 0, sizeof(struct KMS_Agent__RegisterAgentKWKResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, const struct KMS_Agent__RegisterAgentKWKResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse); - if (soap_out_KMS_Agent__RegisterAgentKWKResponse(soap, tag?tag:"KMS-Agent:RegisterAgentKWKResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWKResponse * SOAP_FMAC4 soap_get_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, struct KMS_Agent__RegisterAgentKWKResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RegisterAgentKWKResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RegisterAgentKWKResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RegisterAgentKWKResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RegisterAgentKWKResponse); - if (size) - *size = sizeof(struct KMS_Agent__RegisterAgentKWKResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RegisterAgentKWKResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RegisterAgentKWKResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RegisterAgentKWKResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RegisterAgentKWKResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RegisterAgentKWKResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__RegisterAgentKWKResponse*)p = *(struct KMS_Agent__RegisterAgentKWKResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, struct KMS_Agent__GetAgentKWKPublicKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, const struct KMS_Agent__GetAgentKWKPublicKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, const char *tag, int id, const struct KMS_Agent__GetAgentKWKPublicKey *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey), type)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKey * SOAP_FMAC4 soap_in_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, const char *tag, struct KMS_Agent__GetAgentKWKPublicKey *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__GetAgentKWKPublicKey *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey, sizeof(struct KMS_Agent__GetAgentKWKPublicKey), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__GetAgentKWKPublicKey(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__GetAgentKWKPublicKey *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey, 0, sizeof(struct KMS_Agent__GetAgentKWKPublicKey), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, const struct KMS_Agent__GetAgentKWKPublicKey *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey); - if (soap_out_KMS_Agent__GetAgentKWKPublicKey(soap, tag?tag:"KMS-Agent:GetAgentKWKPublicKey", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKey * SOAP_FMAC4 soap_get_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, struct KMS_Agent__GetAgentKWKPublicKey *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__GetAgentKWKPublicKey(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__GetAgentKWKPublicKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__GetAgentKWKPublicKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__GetAgentKWKPublicKey); - if (size) - *size = sizeof(struct KMS_Agent__GetAgentKWKPublicKey); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__GetAgentKWKPublicKey[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__GetAgentKWKPublicKey); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__GetAgentKWKPublicKey*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__GetAgentKWKPublicKey %p -> %p\n", q, p)); - *(struct KMS_Agent__GetAgentKWKPublicKey*)p = *(struct KMS_Agent__GetAgentKWKPublicKey*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, struct KMS_Agent__GetAgentKWKPublicKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__hexBinary(soap, &a->KWKPublicKey); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, const struct KMS_Agent__GetAgentKWKPublicKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->KWKPublicKey, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - soap_serialize_xsd__hexBinary(soap, &a->KWKPublicKey); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__GetAgentKWKPublicKeyResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse), type)) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "KWKPublicKey", -1, &a->KWKPublicKey, "xsd:hexBinary")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, const char *tag, struct KMS_Agent__GetAgentKWKPublicKeyResponse *a, const char *type) -{ - size_t soap_flag_KWKPublicKey = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__GetAgentKWKPublicKeyResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse, sizeof(struct KMS_Agent__GetAgentKWKPublicKeyResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KWKPublicKey && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "KWKPublicKey", &a->KWKPublicKey, "xsd:hexBinary")) - { soap_flag_KWKPublicKey--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__GetAgentKWKPublicKeyResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse, 0, sizeof(struct KMS_Agent__GetAgentKWKPublicKeyResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_KWKPublicKey > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, const struct KMS_Agent__GetAgentKWKPublicKeyResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse); - if (soap_out_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, tag?tag:"KMS-Agent:GetAgentKWKPublicKeyResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, struct KMS_Agent__GetAgentKWKPublicKeyResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__GetAgentKWKPublicKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__GetAgentKWKPublicKeyResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__GetAgentKWKPublicKeyResponse); - if (size) - *size = sizeof(struct KMS_Agent__GetAgentKWKPublicKeyResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__GetAgentKWKPublicKeyResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__GetAgentKWKPublicKeyResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__GetAgentKWKPublicKeyResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__GetAgentKWKPublicKeyResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__GetAgentKWKPublicKeyResponse*)p = *(struct KMS_Agent__GetAgentKWKPublicKeyResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateAuditLog(struct soap *soap, struct KMS_Agent__CreateAuditLog *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__AuditLogRetention(soap, &a->Retention); - soap_default_KMS_Agent__AuditLogCondition(soap, &a->Condition); - soap_default_xsd__boolean(soap, &a->IssueAlert); - soap_default_xsd__string(soap, &a->Message); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateAuditLog(struct soap *soap, const struct KMS_Agent__CreateAuditLog *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->Message); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateAuditLog(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateAuditLog *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog), type)) - return soap->error; - if (soap_out_KMS_Agent__AuditLogRetention(soap, "Retention", -1, &a->Retention, "KMS-Agent:AuditLogRetention")) - return soap->error; - if (soap_out_KMS_Agent__AuditLogCondition(soap, "Condition", -1, &a->Condition, "KMS-Agent:AuditLogCondition")) - return soap->error; - if (soap_out_xsd__boolean(soap, "IssueAlert", -1, &a->IssueAlert, "xsd:boolean")) - return soap->error; - if (soap_out_xsd__string(soap, "Message", -1, &a->Message, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateAuditLog * SOAP_FMAC4 soap_in_KMS_Agent__CreateAuditLog(struct soap *soap, const char *tag, struct KMS_Agent__CreateAuditLog *a, const char *type) -{ - size_t soap_flag_Retention = 1; - size_t soap_flag_Condition = 1; - size_t soap_flag_IssueAlert = 1; - size_t soap_flag_Message = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateAuditLog *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog, sizeof(struct KMS_Agent__CreateAuditLog), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateAuditLog(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Retention && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__AuditLogRetention(soap, "Retention", &a->Retention, "KMS-Agent:AuditLogRetention")) - { soap_flag_Retention--; - continue; - } - if (soap_flag_Condition && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__AuditLogCondition(soap, "Condition", &a->Condition, "KMS-Agent:AuditLogCondition")) - { soap_flag_Condition--; - continue; - } - if (soap_flag_IssueAlert && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__boolean(soap, "IssueAlert", &a->IssueAlert, "xsd:boolean")) - { soap_flag_IssueAlert--; - continue; - } - if (soap_flag_Message && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "Message", &a->Message, "xsd:string")) - { soap_flag_Message--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateAuditLog *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog, 0, sizeof(struct KMS_Agent__CreateAuditLog), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Retention > 0 || soap_flag_Condition > 0 || soap_flag_IssueAlert > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateAuditLog(struct soap *soap, const struct KMS_Agent__CreateAuditLog *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog); - if (soap_out_KMS_Agent__CreateAuditLog(soap, tag?tag:"KMS-Agent:CreateAuditLog", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateAuditLog * SOAP_FMAC4 soap_get_KMS_Agent__CreateAuditLog(struct soap *soap, struct KMS_Agent__CreateAuditLog *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateAuditLog(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateAuditLog * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateAuditLog(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateAuditLog(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateAuditLog); - if (size) - *size = sizeof(struct KMS_Agent__CreateAuditLog); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateAuditLog[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateAuditLog); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateAuditLog*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateAuditLog(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateAuditLog %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateAuditLog*)p = *(struct KMS_Agent__CreateAuditLog*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateAuditLogResponse(struct soap *soap, struct KMS_Agent__CreateAuditLogResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - /* transient _ skipped */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateAuditLogResponse(struct soap *soap, const struct KMS_Agent__CreateAuditLogResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - /* transient _ skipped */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateAuditLogResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateAuditLogResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse), type)) - return soap->error; - /* transient _ skipped */ - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateAuditLogResponse * SOAP_FMAC4 soap_in_KMS_Agent__CreateAuditLogResponse(struct soap *soap, const char *tag, struct KMS_Agent__CreateAuditLogResponse *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateAuditLogResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse, sizeof(struct KMS_Agent__CreateAuditLogResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateAuditLogResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - /* transient _ skipped */ - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateAuditLogResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse, 0, sizeof(struct KMS_Agent__CreateAuditLogResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateAuditLogResponse(struct soap *soap, const struct KMS_Agent__CreateAuditLogResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse); - if (soap_out_KMS_Agent__CreateAuditLogResponse(soap, tag?tag:"KMS-Agent:CreateAuditLogResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateAuditLogResponse * SOAP_FMAC4 soap_get_KMS_Agent__CreateAuditLogResponse(struct soap *soap, struct KMS_Agent__CreateAuditLogResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateAuditLogResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateAuditLogResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateAuditLogResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateAuditLogResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateAuditLogResponse); - if (size) - *size = sizeof(struct KMS_Agent__CreateAuditLogResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateAuditLogResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateAuditLogResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateAuditLogResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateAuditLogResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateAuditLogResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateAuditLogResponse*)p = *(struct KMS_Agent__CreateAuditLogResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKey2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__string(soap, &a->KeyGroupID); - soap_default_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKey2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyGroupID); - soap_serialize_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveProtectAndProcessKey2 *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "AgentKWKID", -1, &a->AgentKWKID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2 * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveProtectAndProcessKey2 *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - size_t soap_flag_KeyGroupID = 1; - size_t soap_flag_AgentKWKID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveProtectAndProcessKey2 *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveProtectAndProcessKey2(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap_flag_AgentKWKID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "AgentKWKID", &a->AgentKWKID, "xsd:string")) - { soap_flag_AgentKWKID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveProtectAndProcessKey2 *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2, 0, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKey2 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2); - if (soap_out_KMS_Agent__RetrieveProtectAndProcessKey2(soap, tag?tag:"KMS-Agent:RetrieveProtectAndProcessKey2", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2 * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKey2 *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveProtectAndProcessKey2(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKey2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKey2); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKey2[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveProtectAndProcessKey2*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveProtectAndProcessKey2 %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveProtectAndProcessKey2*)p = *(struct KMS_Agent__RetrieveProtectAndProcessKey2*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKey2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response), type)) - return soap->error; - if (soap_out_KMS_Agent__Key(soap, "Key", -1, &a->Key, "KMS-Agent:Key")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2Response * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveProtectAndProcessKey2Response *a, const char *type) -{ - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveProtectAndProcessKey2Response *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2Response), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__Key(soap, "Key", &a->Key, "KMS-Agent:Key")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveProtectAndProcessKey2Response *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response, 0, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2Response), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response); - if (soap_out_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, tag?tag:"KMS-Agent:RetrieveProtectAndProcessKey2Response", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2Response * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKey2Response *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKey2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2Response(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKey2Response); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2Response); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKey2Response[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey2Response); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveProtectAndProcessKey2Response*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveProtectAndProcessKey2Response %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveProtectAndProcessKey2Response*)p = *(struct KMS_Agent__RetrieveProtectAndProcessKey2Response*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__string(soap, &a->KeyGroupID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyGroupID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveProtectAndProcessKey *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveProtectAndProcessKey *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - size_t soap_flag_KeyGroupID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveProtectAndProcessKey *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveProtectAndProcessKey(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveProtectAndProcessKey *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey, 0, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKey *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey); - if (soap_out_KMS_Agent__RetrieveProtectAndProcessKey(soap, tag?tag:"KMS-Agent:RetrieveProtectAndProcessKey", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKey *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveProtectAndProcessKey(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKey); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKey[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveProtectAndProcessKey); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveProtectAndProcessKey*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveProtectAndProcessKey %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveProtectAndProcessKey*)p = *(struct KMS_Agent__RetrieveProtectAndProcessKey*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__Key(soap, "Key", -1, &a->Key, "KMS-Agent:Key")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *a, const char *type) -{ - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__Key(soap, "Key", &a->Key, "KMS-Agent:Key")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse, 0, sizeof(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse); - if (soap_out_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, tag?tag:"KMS-Agent:RetrieveProtectAndProcessKeyResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKeyResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveProtectAndProcessKeyResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveProtectAndProcessKeyResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse*)p = *(struct KMS_Agent__RetrieveProtectAndProcessKeyResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeys2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__int(soap, &a->PageSize); - soap_default_xsd__int(soap, &a->PageOffset); - soap_default_xsd__string(soap, &a->KeyID); - soap_default_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeys2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyID); - soap_serialize_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitKeys2 *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__int(soap, "PageSize", -1, &a->PageSize, "xsd:int")) - return soap->error; - if (soap_out_xsd__int(soap, "PageOffset", -1, &a->PageOffset, "xsd:int")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyID", -1, &a->KeyID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "AgentKWKID", -1, &a->AgentKWKID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2 * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitKeys2 *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - size_t soap_flag_PageSize = 1; - size_t soap_flag_PageOffset = 1; - size_t soap_flag_KeyID = 1; - size_t soap_flag_AgentKWKID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitKeys2 *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2, sizeof(struct KMS_Agent__RetrieveDataUnitKeys2), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitKeys2(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_PageSize && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "PageSize", &a->PageSize, "xsd:int")) - { soap_flag_PageSize--; - continue; - } - if (soap_flag_PageOffset && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "PageOffset", &a->PageOffset, "xsd:int")) - { soap_flag_PageOffset--; - continue; - } - if (soap_flag_KeyID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyID", &a->KeyID, "xsd:string")) - { soap_flag_KeyID--; - continue; - } - if (soap_flag_AgentKWKID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "AgentKWKID", &a->AgentKWKID, "xsd:string")) - { soap_flag_AgentKWKID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitKeys2 *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2, 0, sizeof(struct KMS_Agent__RetrieveDataUnitKeys2), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0 || soap_flag_PageSize > 0 || soap_flag_PageOffset > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeys2 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2); - if (soap_out_KMS_Agent__RetrieveDataUnitKeys2(soap, tag?tag:"KMS-Agent:RetrieveDataUnitKeys2", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2 * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeys2 *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitKeys2(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeys2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeys2); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitKeys2); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeys2[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitKeys2); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitKeys2*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitKeys2 %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitKeys2*)p = *(struct KMS_Agent__RetrieveDataUnitKeys2*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeys2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__long(soap, &a->KeysRemaining); - soap_default_KMS_Agent__ArrayOfKeys(soap, &a->Keys); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeys2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__ArrayOfKeys(soap, &a->Keys); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitKeys2Response *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response), type)) - return soap->error; - if (soap_out_xsd__long(soap, "KeysRemaining", -1, &a->KeysRemaining, "xsd:long")) - return soap->error; - if (soap_out_KMS_Agent__ArrayOfKeys(soap, "Keys", -1, &a->Keys, "KMS-Agent:ArrayOfKeys")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2Response * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitKeys2Response *a, const char *type) -{ - size_t soap_flag_KeysRemaining = 1; - size_t soap_flag_Keys = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitKeys2Response *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response, sizeof(struct KMS_Agent__RetrieveDataUnitKeys2Response), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitKeys2Response(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeysRemaining && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__long(soap, "KeysRemaining", &a->KeysRemaining, "xsd:long")) - { soap_flag_KeysRemaining--; - continue; - } - if (soap_flag_Keys && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__ArrayOfKeys(soap, "Keys", &a->Keys, "KMS-Agent:ArrayOfKeys")) - { soap_flag_Keys--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitKeys2Response *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response, 0, sizeof(struct KMS_Agent__RetrieveDataUnitKeys2Response), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_KeysRemaining > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeys2Response *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response); - if (soap_out_KMS_Agent__RetrieveDataUnitKeys2Response(soap, tag?tag:"KMS-Agent:RetrieveDataUnitKeys2Response", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2Response * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeys2Response *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitKeys2Response(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeys2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2Response(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeys2Response); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitKeys2Response); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeys2Response[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitKeys2Response); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitKeys2Response*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitKeys2Response %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitKeys2Response*)p = *(struct KMS_Agent__RetrieveDataUnitKeys2Response*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeys *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__int(soap, &a->PageSize); - soap_default_xsd__int(soap, &a->PageOffset); - soap_default_xsd__string(soap, &a->KeyID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeys *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitKeys *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__int(soap, "PageSize", -1, &a->PageSize, "xsd:int")) - return soap->error; - if (soap_out_xsd__int(soap, "PageOffset", -1, &a->PageOffset, "xsd:int")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyID", -1, &a->KeyID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitKeys *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - size_t soap_flag_PageSize = 1; - size_t soap_flag_PageOffset = 1; - size_t soap_flag_KeyID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitKeys *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys, sizeof(struct KMS_Agent__RetrieveDataUnitKeys), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitKeys(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_PageSize && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "PageSize", &a->PageSize, "xsd:int")) - { soap_flag_PageSize--; - continue; - } - if (soap_flag_PageOffset && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "PageOffset", &a->PageOffset, "xsd:int")) - { soap_flag_PageOffset--; - continue; - } - if (soap_flag_KeyID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyID", &a->KeyID, "xsd:string")) - { soap_flag_KeyID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitKeys *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys, 0, sizeof(struct KMS_Agent__RetrieveDataUnitKeys), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0 || soap_flag_PageSize > 0 || soap_flag_PageOffset > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeys *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys); - if (soap_out_KMS_Agent__RetrieveDataUnitKeys(soap, tag?tag:"KMS-Agent:RetrieveDataUnitKeys", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeys *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitKeys(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeys * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitKeys(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeys); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitKeys); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeys[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitKeys); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitKeys*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitKeys %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitKeys*)p = *(struct KMS_Agent__RetrieveDataUnitKeys*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeysResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__long(soap, &a->KeysRemaining); - soap_default_KMS_Agent__ArrayOfKeys(soap, &a->Keys); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeysResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__ArrayOfKeys(soap, &a->Keys); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitKeysResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse), type)) - return soap->error; - if (soap_out_xsd__long(soap, "KeysRemaining", -1, &a->KeysRemaining, "xsd:long")) - return soap->error; - if (soap_out_KMS_Agent__ArrayOfKeys(soap, "Keys", -1, &a->Keys, "KMS-Agent:ArrayOfKeys")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeysResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitKeysResponse *a, const char *type) -{ - size_t soap_flag_KeysRemaining = 1; - size_t soap_flag_Keys = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitKeysResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse, sizeof(struct KMS_Agent__RetrieveDataUnitKeysResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitKeysResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeysRemaining && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__long(soap, "KeysRemaining", &a->KeysRemaining, "xsd:long")) - { soap_flag_KeysRemaining--; - continue; - } - if (soap_flag_Keys && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__ArrayOfKeys(soap, "Keys", &a->Keys, "KMS-Agent:ArrayOfKeys")) - { soap_flag_Keys--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitKeysResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse, 0, sizeof(struct KMS_Agent__RetrieveDataUnitKeysResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_KeysRemaining > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitKeysResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse); - if (soap_out_KMS_Agent__RetrieveDataUnitKeysResponse(soap, tag?tag:"KMS-Agent:RetrieveDataUnitKeysResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeysResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, struct KMS_Agent__RetrieveDataUnitKeysResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitKeysResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeysResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitKeysResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeysResponse); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitKeysResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitKeysResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitKeysResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitKeysResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitKeysResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitKeysResponse*)p = *(struct KMS_Agent__RetrieveDataUnitKeysResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKey2(struct soap *soap, struct KMS_Agent__RetrieveKey2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->KeyID); - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__string(soap, &a->KeyGroupID); - soap_default_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKey2(struct soap *soap, const struct KMS_Agent__RetrieveKey2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->KeyID); - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyGroupID); - soap_serialize_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKey2(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveKey2 *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2), type)) - return soap->error; - if (soap_out_xsd__string(soap, "KeyID", -1, &a->KeyID, "xsd:string")) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "AgentKWKID", -1, &a->AgentKWKID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2 * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKey2(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveKey2 *a, const char *type) -{ - size_t soap_flag_KeyID = 1; - size_t soap_flag_DataUnit = 1; - size_t soap_flag_KeyGroupID = 1; - size_t soap_flag_AgentKWKID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveKey2 *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2, sizeof(struct KMS_Agent__RetrieveKey2), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveKey2(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeyID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyID", &a->KeyID, "xsd:string")) - { soap_flag_KeyID--; - continue; - } - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap_flag_AgentKWKID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "AgentKWKID", &a->AgentKWKID, "xsd:string")) - { soap_flag_AgentKWKID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveKey2 *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2, 0, sizeof(struct KMS_Agent__RetrieveKey2), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKey2(struct soap *soap, const struct KMS_Agent__RetrieveKey2 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2); - if (soap_out_KMS_Agent__RetrieveKey2(soap, tag?tag:"KMS-Agent:RetrieveKey2", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2 * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKey2(struct soap *soap, struct KMS_Agent__RetrieveKey2 *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveKey2(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveKey2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKey2(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveKey2(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKey2); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveKey2); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKey2[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveKey2); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveKey2*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKey2(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveKey2 %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveKey2*)p = *(struct KMS_Agent__RetrieveKey2*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKey2Response(struct soap *soap, struct KMS_Agent__RetrieveKey2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKey2Response(struct soap *soap, const struct KMS_Agent__RetrieveKey2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKey2Response(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveKey2Response *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response), type)) - return soap->error; - if (soap_out_KMS_Agent__Key(soap, "Key", -1, &a->Key, "KMS-Agent:Key")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2Response * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKey2Response(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveKey2Response *a, const char *type) -{ - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveKey2Response *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response, sizeof(struct KMS_Agent__RetrieveKey2Response), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveKey2Response(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__Key(soap, "Key", &a->Key, "KMS-Agent:Key")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveKey2Response *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response, 0, sizeof(struct KMS_Agent__RetrieveKey2Response), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKey2Response(struct soap *soap, const struct KMS_Agent__RetrieveKey2Response *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response); - if (soap_out_KMS_Agent__RetrieveKey2Response(soap, tag?tag:"KMS-Agent:RetrieveKey2Response", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2Response * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKey2Response(struct soap *soap, struct KMS_Agent__RetrieveKey2Response *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveKey2Response(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveKey2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKey2Response(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveKey2Response(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKey2Response); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveKey2Response); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKey2Response[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveKey2Response); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveKey2Response*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKey2Response(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveKey2Response %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveKey2Response*)p = *(struct KMS_Agent__RetrieveKey2Response*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKey(struct soap *soap, struct KMS_Agent__RetrieveKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->KeyID); - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__string(soap, &a->KeyGroupID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKey(struct soap *soap, const struct KMS_Agent__RetrieveKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->KeyID); - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyGroupID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKey(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveKey *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey), type)) - return soap->error; - if (soap_out_xsd__string(soap, "KeyID", -1, &a->KeyID, "xsd:string")) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKey(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveKey *a, const char *type) -{ - size_t soap_flag_KeyID = 1; - size_t soap_flag_DataUnit = 1; - size_t soap_flag_KeyGroupID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveKey *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey, sizeof(struct KMS_Agent__RetrieveKey), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveKey(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeyID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyID", &a->KeyID, "xsd:string")) - { soap_flag_KeyID--; - continue; - } - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveKey *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey, 0, sizeof(struct KMS_Agent__RetrieveKey), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKey(struct soap *soap, const struct KMS_Agent__RetrieveKey *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey); - if (soap_out_KMS_Agent__RetrieveKey(soap, tag?tag:"KMS-Agent:RetrieveKey", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKey(struct soap *soap, struct KMS_Agent__RetrieveKey *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveKey(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKey); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveKey); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKey[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveKey); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveKey*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveKey %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveKey*)p = *(struct KMS_Agent__RetrieveKey*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKeyResponse(struct soap *soap, struct KMS_Agent__RetrieveKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKeyResponse(struct soap *soap, const struct KMS_Agent__RetrieveKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKeyResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveKeyResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__Key(soap, "Key", -1, &a->Key, "KMS-Agent:Key")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKeyResponse(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveKeyResponse *a, const char *type) -{ - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveKeyResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse, sizeof(struct KMS_Agent__RetrieveKeyResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveKeyResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__Key(soap, "Key", &a->Key, "KMS-Agent:Key")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveKeyResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse, 0, sizeof(struct KMS_Agent__RetrieveKeyResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKeyResponse(struct soap *soap, const struct KMS_Agent__RetrieveKeyResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse); - if (soap_out_KMS_Agent__RetrieveKeyResponse(soap, tag?tag:"KMS-Agent:RetrieveKeyResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKeyResponse(struct soap *soap, struct KMS_Agent__RetrieveKeyResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveKeyResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKeyResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveKeyResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKeyResponse); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveKeyResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveKeyResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveKeyResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveKeyResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKeyResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveKeyResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveKeyResponse*)p = *(struct KMS_Agent__RetrieveKeyResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKey2(struct soap *soap, struct KMS_Agent__CreateKey2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__string(soap, &a->KeyGroupID); - soap_default_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKey2(struct soap *soap, const struct KMS_Agent__CreateKey2 *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyGroupID); - soap_serialize_xsd__string(soap, &a->AgentKWKID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKey2(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateKey2 *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "AgentKWKID", -1, &a->AgentKWKID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKey2 * SOAP_FMAC4 soap_in_KMS_Agent__CreateKey2(struct soap *soap, const char *tag, struct KMS_Agent__CreateKey2 *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - size_t soap_flag_KeyGroupID = 1; - size_t soap_flag_AgentKWKID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateKey2 *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2, sizeof(struct KMS_Agent__CreateKey2), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateKey2(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap_flag_AgentKWKID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "AgentKWKID", &a->AgentKWKID, "xsd:string")) - { soap_flag_AgentKWKID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateKey2 *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2, 0, sizeof(struct KMS_Agent__CreateKey2), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKey2(struct soap *soap, const struct KMS_Agent__CreateKey2 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2); - if (soap_out_KMS_Agent__CreateKey2(soap, tag?tag:"KMS-Agent:CreateKey2", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKey2 * SOAP_FMAC4 soap_get_KMS_Agent__CreateKey2(struct soap *soap, struct KMS_Agent__CreateKey2 *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateKey2(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateKey2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKey2(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateKey2(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKey2); - if (size) - *size = sizeof(struct KMS_Agent__CreateKey2); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKey2[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateKey2); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateKey2*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKey2(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateKey2 %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateKey2*)p = *(struct KMS_Agent__CreateKey2*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKey2Response(struct soap *soap, struct KMS_Agent__CreateKey2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKey2Response(struct soap *soap, const struct KMS_Agent__CreateKey2Response *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKey2Response(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateKey2Response *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response), type)) - return soap->error; - if (soap_out_KMS_Agent__Key(soap, "Key", -1, &a->Key, "KMS-Agent:Key")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKey2Response * SOAP_FMAC4 soap_in_KMS_Agent__CreateKey2Response(struct soap *soap, const char *tag, struct KMS_Agent__CreateKey2Response *a, const char *type) -{ - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateKey2Response *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response, sizeof(struct KMS_Agent__CreateKey2Response), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateKey2Response(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__Key(soap, "Key", &a->Key, "KMS-Agent:Key")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateKey2Response *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response, 0, sizeof(struct KMS_Agent__CreateKey2Response), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKey2Response(struct soap *soap, const struct KMS_Agent__CreateKey2Response *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response); - if (soap_out_KMS_Agent__CreateKey2Response(soap, tag?tag:"KMS-Agent:CreateKey2Response", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKey2Response * SOAP_FMAC4 soap_get_KMS_Agent__CreateKey2Response(struct soap *soap, struct KMS_Agent__CreateKey2Response *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateKey2Response(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateKey2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKey2Response(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateKey2Response(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKey2Response); - if (size) - *size = sizeof(struct KMS_Agent__CreateKey2Response); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKey2Response[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateKey2Response); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateKey2Response*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKey2Response(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateKey2Response %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateKey2Response*)p = *(struct KMS_Agent__CreateKey2Response*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKey(struct soap *soap, struct KMS_Agent__CreateKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_default_xsd__string(soap, &a->KeyGroupID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKey(struct soap *soap, const struct KMS_Agent__CreateKey *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); - soap_serialize_xsd__string(soap, &a->KeyGroupID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKey(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateKey *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKey * SOAP_FMAC4 soap_in_KMS_Agent__CreateKey(struct soap *soap, const char *tag, struct KMS_Agent__CreateKey *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - size_t soap_flag_KeyGroupID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateKey *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey, sizeof(struct KMS_Agent__CreateKey), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateKey(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateKey *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey, 0, sizeof(struct KMS_Agent__CreateKey), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKey(struct soap *soap, const struct KMS_Agent__CreateKey *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey); - if (soap_out_KMS_Agent__CreateKey(soap, tag?tag:"KMS-Agent:CreateKey", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKey * SOAP_FMAC4 soap_get_KMS_Agent__CreateKey(struct soap *soap, struct KMS_Agent__CreateKey *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateKey(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKey); - if (size) - *size = sizeof(struct KMS_Agent__CreateKey); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKey[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateKey); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateKey*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateKey %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateKey*)p = *(struct KMS_Agent__CreateKey*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKeyResponse(struct soap *soap, struct KMS_Agent__CreateKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKeyResponse(struct soap *soap, const struct KMS_Agent__CreateKeyResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKeyResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateKeyResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__Key(soap, "Key", -1, &a->Key, "KMS-Agent:Key")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__CreateKeyResponse(struct soap *soap, const char *tag, struct KMS_Agent__CreateKeyResponse *a, const char *type) -{ - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateKeyResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse, sizeof(struct KMS_Agent__CreateKeyResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateKeyResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__Key(soap, "Key", &a->Key, "KMS-Agent:Key")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateKeyResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse, 0, sizeof(struct KMS_Agent__CreateKeyResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKeyResponse(struct soap *soap, const struct KMS_Agent__CreateKeyResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse); - if (soap_out_KMS_Agent__CreateKeyResponse(soap, tag?tag:"KMS-Agent:CreateKeyResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__CreateKeyResponse(struct soap *soap, struct KMS_Agent__CreateKeyResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateKeyResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKeyResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateKeyResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKeyResponse); - if (size) - *size = sizeof(struct KMS_Agent__CreateKeyResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateKeyResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateKeyResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateKeyResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKeyResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateKeyResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateKeyResponse*)p = *(struct KMS_Agent__CreateKeyResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, struct KMS_Agent__DisassociateDataUnitKeys *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, const struct KMS_Agent__DisassociateDataUnitKeys *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, const char *tag, int id, const struct KMS_Agent__DisassociateDataUnitKeys *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeys * SOAP_FMAC4 soap_in_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, const char *tag, struct KMS_Agent__DisassociateDataUnitKeys *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__DisassociateDataUnitKeys *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys, sizeof(struct KMS_Agent__DisassociateDataUnitKeys), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__DisassociateDataUnitKeys(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__DisassociateDataUnitKeys *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys, 0, sizeof(struct KMS_Agent__DisassociateDataUnitKeys), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, const struct KMS_Agent__DisassociateDataUnitKeys *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys); - if (soap_out_KMS_Agent__DisassociateDataUnitKeys(soap, tag?tag:"KMS-Agent:DisassociateDataUnitKeys", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeys * SOAP_FMAC4 soap_get_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, struct KMS_Agent__DisassociateDataUnitKeys *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__DisassociateDataUnitKeys(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__DisassociateDataUnitKeys * SOAP_FMAC2 soap_instantiate_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__DisassociateDataUnitKeys(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__DisassociateDataUnitKeys); - if (size) - *size = sizeof(struct KMS_Agent__DisassociateDataUnitKeys); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__DisassociateDataUnitKeys[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__DisassociateDataUnitKeys); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__DisassociateDataUnitKeys*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__DisassociateDataUnitKeys %p -> %p\n", q, p)); - *(struct KMS_Agent__DisassociateDataUnitKeys*)p = *(struct KMS_Agent__DisassociateDataUnitKeys*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, struct KMS_Agent__DisassociateDataUnitKeysResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - /* transient _ skipped */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, const struct KMS_Agent__DisassociateDataUnitKeysResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - /* transient _ skipped */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__DisassociateDataUnitKeysResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse), type)) - return soap->error; - /* transient _ skipped */ - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeysResponse * SOAP_FMAC4 soap_in_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, const char *tag, struct KMS_Agent__DisassociateDataUnitKeysResponse *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__DisassociateDataUnitKeysResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse, sizeof(struct KMS_Agent__DisassociateDataUnitKeysResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__DisassociateDataUnitKeysResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - /* transient _ skipped */ - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__DisassociateDataUnitKeysResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse, 0, sizeof(struct KMS_Agent__DisassociateDataUnitKeysResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, const struct KMS_Agent__DisassociateDataUnitKeysResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse); - if (soap_out_KMS_Agent__DisassociateDataUnitKeysResponse(soap, tag?tag:"KMS-Agent:DisassociateDataUnitKeysResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeysResponse * SOAP_FMAC4 soap_get_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, struct KMS_Agent__DisassociateDataUnitKeysResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__DisassociateDataUnitKeysResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__DisassociateDataUnitKeysResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__DisassociateDataUnitKeysResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__DisassociateDataUnitKeysResponse); - if (size) - *size = sizeof(struct KMS_Agent__DisassociateDataUnitKeysResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__DisassociateDataUnitKeysResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__DisassociateDataUnitKeysResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__DisassociateDataUnitKeysResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__DisassociateDataUnitKeysResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__DisassociateDataUnitKeysResponse*)p = *(struct KMS_Agent__DisassociateDataUnitKeysResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->ExternalUniqueID); - soap_default_xsd__string(soap, &a->ExternalTag); - soap_default_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->ExternalUniqueID); - soap_serialize_xsd__string(soap, &a->ExternalTag); - soap_serialize_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID), type)) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalUniqueID", -1, &a->ExternalUniqueID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalTag", -1, &a->ExternalTag, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "Description", -1, &a->Description, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueID * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *a, const char *type) -{ - size_t soap_flag_ExternalUniqueID = 1; - size_t soap_flag_ExternalTag = 1; - size_t soap_flag_Description = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID, sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_ExternalUniqueID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalUniqueID", &a->ExternalUniqueID, "xsd:string")) - { soap_flag_ExternalUniqueID--; - continue; - } - if (soap_flag_ExternalTag && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalTag", &a->ExternalTag, "xsd:string")) - { soap_flag_ExternalTag--; - continue; - } - if (soap_flag_Description && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "Description", &a->Description, "xsd:string")) - { soap_flag_Description--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID, 0, sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID); - if (soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, tag?tag:"KMS-Agent:RetrieveDataUnitByExternalUniqueID", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueID * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitByExternalUniqueID * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueID(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitByExternalUniqueID*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitByExternalUniqueID %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID*)p = *(struct KMS_Agent__RetrieveDataUnitByExternalUniqueID*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse, sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse, 0, sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse); - if (soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, tag?tag:"KMS-Agent:RetrieveDataUnitByExternalUniqueIDResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse*)p = *(struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnit(struct soap *soap, struct KMS_Agent__RetrieveDataUnit *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->DataUnitID); - soap_default_xsd__string(soap, &a->ExternalUniqueID); - soap_default_xsd__string(soap, &a->ExternalTag); - soap_default_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnit(struct soap *soap, const struct KMS_Agent__RetrieveDataUnit *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->DataUnitID); - soap_serialize_xsd__string(soap, &a->ExternalUniqueID); - soap_serialize_xsd__string(soap, &a->ExternalTag); - soap_serialize_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnit(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnit *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit), type)) - return soap->error; - if (soap_out_xsd__string(soap, "DataUnitID", -1, &a->DataUnitID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalUniqueID", -1, &a->ExternalUniqueID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalTag", -1, &a->ExternalTag, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "Description", -1, &a->Description, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnit * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnit(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnit *a, const char *type) -{ - size_t soap_flag_DataUnitID = 1; - size_t soap_flag_ExternalUniqueID = 1; - size_t soap_flag_ExternalTag = 1; - size_t soap_flag_Description = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnit *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit, sizeof(struct KMS_Agent__RetrieveDataUnit), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnit(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnitID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "DataUnitID", &a->DataUnitID, "xsd:string")) - { soap_flag_DataUnitID--; - continue; - } - if (soap_flag_ExternalUniqueID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalUniqueID", &a->ExternalUniqueID, "xsd:string")) - { soap_flag_ExternalUniqueID--; - continue; - } - if (soap_flag_ExternalTag && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalTag", &a->ExternalTag, "xsd:string")) - { soap_flag_ExternalTag--; - continue; - } - if (soap_flag_Description && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "Description", &a->Description, "xsd:string")) - { soap_flag_Description--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnit *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit, 0, sizeof(struct KMS_Agent__RetrieveDataUnit), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnit(struct soap *soap, const struct KMS_Agent__RetrieveDataUnit *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit); - if (soap_out_KMS_Agent__RetrieveDataUnit(soap, tag?tag:"KMS-Agent:RetrieveDataUnit", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnit * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnit(struct soap *soap, struct KMS_Agent__RetrieveDataUnit *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnit(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnit * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnit(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnit(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnit); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnit); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnit[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnit); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnit*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnit(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnit %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnit*)p = *(struct KMS_Agent__RetrieveDataUnit*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, struct KMS_Agent__RetrieveDataUnitResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__RetrieveDataUnitResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, const char *tag, struct KMS_Agent__RetrieveDataUnitResponse *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__RetrieveDataUnitResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse, sizeof(struct KMS_Agent__RetrieveDataUnitResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__RetrieveDataUnitResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__RetrieveDataUnitResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse, 0, sizeof(struct KMS_Agent__RetrieveDataUnitResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, const struct KMS_Agent__RetrieveDataUnitResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse); - if (soap_out_KMS_Agent__RetrieveDataUnitResponse(soap, tag?tag:"KMS-Agent:RetrieveDataUnitResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, struct KMS_Agent__RetrieveDataUnitResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__RetrieveDataUnitResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__RetrieveDataUnitResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitResponse); - if (size) - *size = sizeof(struct KMS_Agent__RetrieveDataUnitResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__RetrieveDataUnitResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__RetrieveDataUnitResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__RetrieveDataUnitResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__RetrieveDataUnitResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__RetrieveDataUnitResponse*)p = *(struct KMS_Agent__RetrieveDataUnitResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateDataUnit(struct soap *soap, struct KMS_Agent__CreateDataUnit *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->ExternalUniqueID); - soap_default_xsd__string(soap, &a->ExternalTag); - soap_default_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateDataUnit(struct soap *soap, const struct KMS_Agent__CreateDataUnit *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->ExternalUniqueID); - soap_serialize_xsd__string(soap, &a->ExternalTag); - soap_serialize_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateDataUnit(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateDataUnit *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit), type)) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalUniqueID", -1, &a->ExternalUniqueID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalTag", -1, &a->ExternalTag, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "Description", -1, &a->Description, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateDataUnit * SOAP_FMAC4 soap_in_KMS_Agent__CreateDataUnit(struct soap *soap, const char *tag, struct KMS_Agent__CreateDataUnit *a, const char *type) -{ - size_t soap_flag_ExternalUniqueID = 1; - size_t soap_flag_ExternalTag = 1; - size_t soap_flag_Description = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateDataUnit *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit, sizeof(struct KMS_Agent__CreateDataUnit), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateDataUnit(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_ExternalUniqueID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalUniqueID", &a->ExternalUniqueID, "xsd:string")) - { soap_flag_ExternalUniqueID--; - continue; - } - if (soap_flag_ExternalTag && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalTag", &a->ExternalTag, "xsd:string")) - { soap_flag_ExternalTag--; - continue; - } - if (soap_flag_Description && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "Description", &a->Description, "xsd:string")) - { soap_flag_Description--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateDataUnit *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit, 0, sizeof(struct KMS_Agent__CreateDataUnit), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateDataUnit(struct soap *soap, const struct KMS_Agent__CreateDataUnit *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit); - if (soap_out_KMS_Agent__CreateDataUnit(soap, tag?tag:"KMS-Agent:CreateDataUnit", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateDataUnit * SOAP_FMAC4 soap_get_KMS_Agent__CreateDataUnit(struct soap *soap, struct KMS_Agent__CreateDataUnit *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateDataUnit(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateDataUnit * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateDataUnit(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateDataUnit(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateDataUnit); - if (size) - *size = sizeof(struct KMS_Agent__CreateDataUnit); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateDataUnit[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateDataUnit); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateDataUnit*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateDataUnit(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateDataUnit %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateDataUnit*)p = *(struct KMS_Agent__CreateDataUnit*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateDataUnitResponse(struct soap *soap, struct KMS_Agent__CreateDataUnitResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateDataUnitResponse(struct soap *soap, const struct KMS_Agent__CreateDataUnitResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__DataUnit(soap, &a->DataUnit); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateDataUnitResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__CreateDataUnitResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__DataUnit(soap, "DataUnit", -1, &a->DataUnit, "KMS-Agent:DataUnit")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__CreateDataUnitResponse * SOAP_FMAC4 soap_in_KMS_Agent__CreateDataUnitResponse(struct soap *soap, const char *tag, struct KMS_Agent__CreateDataUnitResponse *a, const char *type) -{ - size_t soap_flag_DataUnit = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__CreateDataUnitResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse, sizeof(struct KMS_Agent__CreateDataUnitResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__CreateDataUnitResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnit && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnit(soap, "DataUnit", &a->DataUnit, "KMS-Agent:DataUnit")) - { soap_flag_DataUnit--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__CreateDataUnitResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse, 0, sizeof(struct KMS_Agent__CreateDataUnitResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnit > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateDataUnitResponse(struct soap *soap, const struct KMS_Agent__CreateDataUnitResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse); - if (soap_out_KMS_Agent__CreateDataUnitResponse(soap, tag?tag:"KMS-Agent:CreateDataUnitResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__CreateDataUnitResponse * SOAP_FMAC4 soap_get_KMS_Agent__CreateDataUnitResponse(struct soap *soap, struct KMS_Agent__CreateDataUnitResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__CreateDataUnitResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__CreateDataUnitResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateDataUnitResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__CreateDataUnitResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateDataUnitResponse); - if (size) - *size = sizeof(struct KMS_Agent__CreateDataUnitResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__CreateDataUnitResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__CreateDataUnitResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__CreateDataUnitResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateDataUnitResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__CreateDataUnitResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__CreateDataUnitResponse*)p = *(struct KMS_Agent__CreateDataUnitResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ListKeyGroups(struct soap *soap, struct KMS_Agent__ListKeyGroups *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__QueryParameters(soap, &a->QueryParameters); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ListKeyGroups(struct soap *soap, const struct KMS_Agent__ListKeyGroups *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__QueryParameters(soap, &a->QueryParameters); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ListKeyGroups(struct soap *soap, const char *tag, int id, const struct KMS_Agent__ListKeyGroups *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups), type)) - return soap->error; - if (soap_out_KMS_Agent__QueryParameters(soap, "QueryParameters", -1, &a->QueryParameters, "KMS-Agent:QueryParameters")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__ListKeyGroups * SOAP_FMAC4 soap_in_KMS_Agent__ListKeyGroups(struct soap *soap, const char *tag, struct KMS_Agent__ListKeyGroups *a, const char *type) -{ - size_t soap_flag_QueryParameters = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__ListKeyGroups *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups, sizeof(struct KMS_Agent__ListKeyGroups), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__ListKeyGroups(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_QueryParameters && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__QueryParameters(soap, "QueryParameters", &a->QueryParameters, "KMS-Agent:QueryParameters")) - { soap_flag_QueryParameters--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__ListKeyGroups *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups, 0, sizeof(struct KMS_Agent__ListKeyGroups), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_QueryParameters > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ListKeyGroups(struct soap *soap, const struct KMS_Agent__ListKeyGroups *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups); - if (soap_out_KMS_Agent__ListKeyGroups(soap, tag?tag:"KMS-Agent:ListKeyGroups", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__ListKeyGroups * SOAP_FMAC4 soap_get_KMS_Agent__ListKeyGroups(struct soap *soap, struct KMS_Agent__ListKeyGroups *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__ListKeyGroups(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__ListKeyGroups * SOAP_FMAC2 soap_instantiate_KMS_Agent__ListKeyGroups(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__ListKeyGroups(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ListKeyGroups); - if (size) - *size = sizeof(struct KMS_Agent__ListKeyGroups); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ListKeyGroups[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__ListKeyGroups); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__ListKeyGroups*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ListKeyGroups(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__ListKeyGroups %p -> %p\n", q, p)); - *(struct KMS_Agent__ListKeyGroups*)p = *(struct KMS_Agent__ListKeyGroups*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, struct KMS_Agent__ListKeyGroupsResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_KMS_Agent__ArrayOfKeyGroups(soap, &a->KeyGroups); - soap_default_xsd__boolean(soap, &a->LastPage); - soap_default_KMS_Agent__QueryParameters(soap, &a->NextPageQueryParameters); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, const struct KMS_Agent__ListKeyGroupsResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_KMS_Agent__ArrayOfKeyGroups(soap, &a->KeyGroups); - soap_serialize_KMS_Agent__QueryParameters(soap, &a->NextPageQueryParameters); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, const char *tag, int id, const struct KMS_Agent__ListKeyGroupsResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse), type)) - return soap->error; - if (soap_out_KMS_Agent__ArrayOfKeyGroups(soap, "KeyGroups", -1, &a->KeyGroups, "KMS-Agent:ArrayOfKeyGroups")) - return soap->error; - if (soap_out_xsd__boolean(soap, "LastPage", -1, &a->LastPage, "xsd:boolean")) - return soap->error; - if (soap_out_KMS_Agent__QueryParameters(soap, "NextPageQueryParameters", -1, &a->NextPageQueryParameters, "KMS-Agent:QueryParameters")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__ListKeyGroupsResponse * SOAP_FMAC4 soap_in_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, const char *tag, struct KMS_Agent__ListKeyGroupsResponse *a, const char *type) -{ - size_t soap_flag_KeyGroups = 1; - size_t soap_flag_LastPage = 1; - size_t soap_flag_NextPageQueryParameters = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__ListKeyGroupsResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse, sizeof(struct KMS_Agent__ListKeyGroupsResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__ListKeyGroupsResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeyGroups && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__ArrayOfKeyGroups(soap, "KeyGroups", &a->KeyGroups, "KMS-Agent:ArrayOfKeyGroups")) - { soap_flag_KeyGroups--; - continue; - } - if (soap_flag_LastPage && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__boolean(soap, "LastPage", &a->LastPage, "xsd:boolean")) - { soap_flag_LastPage--; - continue; - } - if (soap_flag_NextPageQueryParameters && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__QueryParameters(soap, "NextPageQueryParameters", &a->NextPageQueryParameters, "KMS-Agent:QueryParameters")) - { soap_flag_NextPageQueryParameters--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__ListKeyGroupsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse, 0, sizeof(struct KMS_Agent__ListKeyGroupsResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_LastPage > 0 || soap_flag_NextPageQueryParameters > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, const struct KMS_Agent__ListKeyGroupsResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse); - if (soap_out_KMS_Agent__ListKeyGroupsResponse(soap, tag?tag:"KMS-Agent:ListKeyGroupsResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__ListKeyGroupsResponse * SOAP_FMAC4 soap_get_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, struct KMS_Agent__ListKeyGroupsResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__ListKeyGroupsResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__ListKeyGroupsResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__ListKeyGroupsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ListKeyGroupsResponse); - if (size) - *size = sizeof(struct KMS_Agent__ListKeyGroupsResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ListKeyGroupsResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__ListKeyGroupsResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__ListKeyGroupsResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ListKeyGroupsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__ListKeyGroupsResponse %p -> %p\n", q, p)); - *(struct KMS_Agent__ListKeyGroupsResponse*)p = *(struct KMS_Agent__ListKeyGroupsResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DataUnit(struct soap *soap, struct KMS_Agent__DataUnit *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->DataUnitID); - soap_default_xsd__string(soap, &a->ExternalUniqueID); - soap_default_xsd__string(soap, &a->ExternalTag); - soap_default_xsd__string(soap, &a->Description); - soap_default_KMS_Agent__DataUnitState(soap, &a->DataUnitState); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__DataUnit(struct soap *soap, const struct KMS_Agent__DataUnit *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->DataUnitID); - soap_serialize_xsd__string(soap, &a->ExternalUniqueID); - soap_serialize_xsd__string(soap, &a->ExternalTag); - soap_serialize_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DataUnit(struct soap *soap, const char *tag, int id, const struct KMS_Agent__DataUnit *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit), type)) - return soap->error; - if (soap_out_xsd__string(soap, "DataUnitID", -1, &a->DataUnitID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalUniqueID", -1, &a->ExternalUniqueID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "ExternalTag", -1, &a->ExternalTag, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "Description", -1, &a->Description, "xsd:string")) - return soap->error; - if (soap_out_KMS_Agent__DataUnitState(soap, "DataUnitState", -1, &a->DataUnitState, "KMS-Agent:DataUnitState")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__DataUnit * SOAP_FMAC4 soap_in_KMS_Agent__DataUnit(struct soap *soap, const char *tag, struct KMS_Agent__DataUnit *a, const char *type) -{ - size_t soap_flag_DataUnitID = 1; - size_t soap_flag_ExternalUniqueID = 1; - size_t soap_flag_ExternalTag = 1; - size_t soap_flag_Description = 1; - size_t soap_flag_DataUnitState = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__DataUnit *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit, sizeof(struct KMS_Agent__DataUnit), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__DataUnit(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_DataUnitID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "DataUnitID", &a->DataUnitID, "xsd:string")) - { soap_flag_DataUnitID--; - continue; - } - if (soap_flag_ExternalUniqueID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalUniqueID", &a->ExternalUniqueID, "xsd:string")) - { soap_flag_ExternalUniqueID--; - continue; - } - if (soap_flag_ExternalTag && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "ExternalTag", &a->ExternalTag, "xsd:string")) - { soap_flag_ExternalTag--; - continue; - } - if (soap_flag_Description && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "Description", &a->Description, "xsd:string")) - { soap_flag_Description--; - continue; - } - if (soap_flag_DataUnitState && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__DataUnitState(soap, "DataUnitState", &a->DataUnitState, "KMS-Agent:DataUnitState")) - { soap_flag_DataUnitState--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__DataUnit *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit, 0, sizeof(struct KMS_Agent__DataUnit), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_DataUnitState > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DataUnit(struct soap *soap, const struct KMS_Agent__DataUnit *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit); - if (soap_out_KMS_Agent__DataUnit(soap, tag?tag:"KMS-Agent:DataUnit", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__DataUnit * SOAP_FMAC4 soap_get_KMS_Agent__DataUnit(struct soap *soap, struct KMS_Agent__DataUnit *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__DataUnit(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__DataUnit * SOAP_FMAC2 soap_instantiate_KMS_Agent__DataUnit(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__DataUnit(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__DataUnit); - if (size) - *size = sizeof(struct KMS_Agent__DataUnit); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__DataUnit[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__DataUnit); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__DataUnit*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__DataUnit(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__DataUnit %p -> %p\n", q, p)); - *(struct KMS_Agent__DataUnit*)p = *(struct KMS_Agent__DataUnit*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfKeys(struct soap *soap, struct KMS_Agent__ArrayOfKeys *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfKeys(struct soap *soap, struct KMS_Agent__ArrayOfKeys const*a) -{ - int i; - if (a->__ptr && !soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys)) - for (i = 0; i < a->__size; i++) - { soap_embedded(soap, a->__ptr + i, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - soap_serialize_KMS_Agent__Key(soap, a->__ptr + i); - } -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfKeys(struct soap *soap, const char *tag, int id, const struct KMS_Agent__ArrayOfKeys *a, const char *type) -{ - int i, n = a->__size; - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - for (i = 0; i < n; i++) - { - soap_out_KMS_Agent__Key(soap, "item", -1, &a->__ptr[i], "KMS-Agent:Key"); - } - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeys * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfKeys(struct soap *soap, const char *tag, struct KMS_Agent__ArrayOfKeys *a, const char *type) -{ int i, j; - struct KMS_Agent__Key *p; - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_array(soap, "KMS-Agent:Key") && soap_match_tag(soap, soap->type, type)) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct KMS_Agent__ArrayOfKeys *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys, sizeof(struct KMS_Agent__ArrayOfKeys), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__ArrayOfKeys(soap, a); - if (soap->body && !*soap->href) - { - a->__size = soap_getsize(soap->arraySize, soap->arrayOffset, &j); - if (a->__size >= 0) - { a->__ptr = (struct KMS_Agent__Key *)soap_malloc(soap, sizeof(struct KMS_Agent__Key) * a->__size); - for (i = 0; i < a->__size; i++) - soap_default_KMS_Agent__Key(soap, a->__ptr+i); - for (i = 0; i < a->__size; i++) - { soap_peek_element(soap); - if (soap->position) - { i = soap->positions[0]-j; - if (i < 0 || i >= a->__size) - { soap->error = SOAP_IOB; - return NULL; - } - } - if (!soap_in_KMS_Agent__Key(soap, NULL, a->__ptr + i, "KMS-Agent:Key")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - } - else - { if (soap_new_block(soap) == NULL) - return NULL; - for (a->__size = 0; ; a->__size++) - { p = (struct KMS_Agent__Key *)soap_push_block(soap, NULL, sizeof(struct KMS_Agent__Key)); - if (!p) - return NULL; - soap_default_KMS_Agent__Key(soap, p); - if (!soap_in_KMS_Agent__Key(soap, NULL, p, "KMS-Agent:Key")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - soap_pop_block(soap, NULL); - a->__ptr = (struct KMS_Agent__Key *)soap_malloc(soap, soap->blist->size); - soap_save_block(soap, NULL, (char*)a->__ptr, 1); - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__ArrayOfKeys *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys, 0, sizeof(struct KMS_Agent__ArrayOfKeys), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfKeys(struct soap *soap, const struct KMS_Agent__ArrayOfKeys *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys); - if (soap_out_KMS_Agent__ArrayOfKeys(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeys * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfKeys(struct soap *soap, struct KMS_Agent__ArrayOfKeys *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__ArrayOfKeys(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__ArrayOfKeys * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfKeys(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__ArrayOfKeys(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfKeys); - if (size) - *size = sizeof(struct KMS_Agent__ArrayOfKeys); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfKeys[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__ArrayOfKeys); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__ArrayOfKeys*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfKeys(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__ArrayOfKeys %p -> %p\n", q, p)); - *(struct KMS_Agent__ArrayOfKeys*)p = *(struct KMS_Agent__ArrayOfKeys*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__Key(struct soap *soap, struct KMS_Agent__Key *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->KeyID); - soap_default_KMS_Agent__KeyState(soap, &a->KeyState); - soap_default_KMS_Agent__KeyType(soap, &a->KeyType); - soap_default_xsd__string(soap, &a->KeyGroupID); - soap_default_xsd__hexBinary(soap, &a->Key); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__Key(struct soap *soap, const struct KMS_Agent__Key *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->KeyID); - soap_serialize_xsd__string(soap, &a->KeyGroupID); - soap_embedded(soap, &a->Key, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - soap_serialize_xsd__hexBinary(soap, &a->Key); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__Key(struct soap *soap, const char *tag, int id, const struct KMS_Agent__Key *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__Key), type)) - return soap->error; - if (soap_out_xsd__string(soap, "KeyID", -1, &a->KeyID, "xsd:string")) - return soap->error; - if (soap_out_KMS_Agent__KeyState(soap, "KeyState", -1, &a->KeyState, "KMS-Agent:KeyState")) - return soap->error; - if (soap_out_KMS_Agent__KeyType(soap, "KeyType", -1, &a->KeyType, "KMS-Agent:KeyType")) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "Key", -1, &a->Key, "xsd:hexBinary")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__Key * SOAP_FMAC4 soap_in_KMS_Agent__Key(struct soap *soap, const char *tag, struct KMS_Agent__Key *a, const char *type) -{ - size_t soap_flag_KeyID = 1; - size_t soap_flag_KeyState = 1; - size_t soap_flag_KeyType = 1; - size_t soap_flag_KeyGroupID = 1; - size_t soap_flag_Key = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__Key *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__Key, sizeof(struct KMS_Agent__Key), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__Key(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeyID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyID", &a->KeyID, "xsd:string")) - { soap_flag_KeyID--; - continue; - } - if (soap_flag_KeyState && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__KeyState(soap, "KeyState", &a->KeyState, "KMS-Agent:KeyState")) - { soap_flag_KeyState--; - continue; - } - if (soap_flag_KeyType && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__KeyType(soap, "KeyType", &a->KeyType, "KMS-Agent:KeyType")) - { soap_flag_KeyType--; - continue; - } - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap_flag_Key && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "Key", &a->Key, "xsd:hexBinary")) - { soap_flag_Key--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__Key *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__Key, 0, sizeof(struct KMS_Agent__Key), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_KeyState > 0 || soap_flag_KeyType > 0 || soap_flag_Key > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__Key(struct soap *soap, const struct KMS_Agent__Key *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - if (soap_out_KMS_Agent__Key(soap, tag?tag:"KMS-Agent:Key", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__Key * SOAP_FMAC4 soap_get_KMS_Agent__Key(struct soap *soap, struct KMS_Agent__Key *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__Key(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__Key * SOAP_FMAC2 soap_instantiate_KMS_Agent__Key(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__Key(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__Key, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__Key); - if (size) - *size = sizeof(struct KMS_Agent__Key); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__Key[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__Key); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__Key*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__Key(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__Key %p -> %p\n", q, p)); - *(struct KMS_Agent__Key*)p = *(struct KMS_Agent__Key*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, struct KMS_Agent__ArrayOfKeyGroups *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, struct KMS_Agent__ArrayOfKeyGroups const*a) -{ - int i; - if (a->__ptr && !soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups)) - for (i = 0; i < a->__size; i++) - { soap_embedded(soap, a->__ptr + i, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup); - soap_serialize_KMS_Agent__KeyGroup(soap, a->__ptr + i); - } -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, const char *tag, int id, const struct KMS_Agent__ArrayOfKeyGroups *a, const char *type) -{ - int i, n = a->__size; - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - for (i = 0; i < n; i++) - { - soap_out_KMS_Agent__KeyGroup(soap, "item", -1, &a->__ptr[i], "KMS-Agent:KeyGroup"); - } - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeyGroups * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, const char *tag, struct KMS_Agent__ArrayOfKeyGroups *a, const char *type) -{ int i, j; - struct KMS_Agent__KeyGroup *p; - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_array(soap, "KMS-Agent:KeyGroup") && soap_match_tag(soap, soap->type, type)) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct KMS_Agent__ArrayOfKeyGroups *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups, sizeof(struct KMS_Agent__ArrayOfKeyGroups), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__ArrayOfKeyGroups(soap, a); - if (soap->body && !*soap->href) - { - a->__size = soap_getsize(soap->arraySize, soap->arrayOffset, &j); - if (a->__size >= 0) - { a->__ptr = (struct KMS_Agent__KeyGroup *)soap_malloc(soap, sizeof(struct KMS_Agent__KeyGroup) * a->__size); - for (i = 0; i < a->__size; i++) - soap_default_KMS_Agent__KeyGroup(soap, a->__ptr+i); - for (i = 0; i < a->__size; i++) - { soap_peek_element(soap); - if (soap->position) - { i = soap->positions[0]-j; - if (i < 0 || i >= a->__size) - { soap->error = SOAP_IOB; - return NULL; - } - } - if (!soap_in_KMS_Agent__KeyGroup(soap, NULL, a->__ptr + i, "KMS-Agent:KeyGroup")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - } - else - { if (soap_new_block(soap) == NULL) - return NULL; - for (a->__size = 0; ; a->__size++) - { p = (struct KMS_Agent__KeyGroup *)soap_push_block(soap, NULL, sizeof(struct KMS_Agent__KeyGroup)); - if (!p) - return NULL; - soap_default_KMS_Agent__KeyGroup(soap, p); - if (!soap_in_KMS_Agent__KeyGroup(soap, NULL, p, "KMS-Agent:KeyGroup")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - soap_pop_block(soap, NULL); - a->__ptr = (struct KMS_Agent__KeyGroup *)soap_malloc(soap, soap->blist->size); - soap_save_block(soap, NULL, (char*)a->__ptr, 1); - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__ArrayOfKeyGroups *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups, 0, sizeof(struct KMS_Agent__ArrayOfKeyGroups), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, const struct KMS_Agent__ArrayOfKeyGroups *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups); - if (soap_out_KMS_Agent__ArrayOfKeyGroups(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeyGroups * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, struct KMS_Agent__ArrayOfKeyGroups *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__ArrayOfKeyGroups(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__ArrayOfKeyGroups * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__ArrayOfKeyGroups(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfKeyGroups); - if (size) - *size = sizeof(struct KMS_Agent__ArrayOfKeyGroups); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfKeyGroups[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__ArrayOfKeyGroups); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__ArrayOfKeyGroups*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfKeyGroups(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__ArrayOfKeyGroups %p -> %p\n", q, p)); - *(struct KMS_Agent__ArrayOfKeyGroups*)p = *(struct KMS_Agent__ArrayOfKeyGroups*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__KeyGroup(struct soap *soap, struct KMS_Agent__KeyGroup *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->KeyGroupID); - soap_default_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__KeyGroup(struct soap *soap, const struct KMS_Agent__KeyGroup *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->KeyGroupID); - soap_serialize_xsd__string(soap, &a->Description); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__KeyGroup(struct soap *soap, const char *tag, int id, const struct KMS_Agent__KeyGroup *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup), type)) - return soap->error; - if (soap_out_xsd__string(soap, "KeyGroupID", -1, &a->KeyGroupID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "Description", -1, &a->Description, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__KeyGroup * SOAP_FMAC4 soap_in_KMS_Agent__KeyGroup(struct soap *soap, const char *tag, struct KMS_Agent__KeyGroup *a, const char *type) -{ - size_t soap_flag_KeyGroupID = 1; - size_t soap_flag_Description = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__KeyGroup *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup, sizeof(struct KMS_Agent__KeyGroup), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__KeyGroup(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KeyGroupID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KeyGroupID", &a->KeyGroupID, "xsd:string")) - { soap_flag_KeyGroupID--; - continue; - } - if (soap_flag_Description && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "Description", &a->Description, "xsd:string")) - { soap_flag_Description--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__KeyGroup *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup, 0, sizeof(struct KMS_Agent__KeyGroup), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__KeyGroup(struct soap *soap, const struct KMS_Agent__KeyGroup *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup); - if (soap_out_KMS_Agent__KeyGroup(soap, tag?tag:"KMS-Agent:KeyGroup", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__KeyGroup * SOAP_FMAC4 soap_get_KMS_Agent__KeyGroup(struct soap *soap, struct KMS_Agent__KeyGroup *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__KeyGroup(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__KeyGroup * SOAP_FMAC2 soap_instantiate_KMS_Agent__KeyGroup(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__KeyGroup(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__KeyGroup); - if (size) - *size = sizeof(struct KMS_Agent__KeyGroup); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__KeyGroup[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__KeyGroup); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__KeyGroup*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__KeyGroup(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__KeyGroup %p -> %p\n", q, p)); - *(struct KMS_Agent__KeyGroup*)p = *(struct KMS_Agent__KeyGroup*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__QueryParameters(struct soap *soap, struct KMS_Agent__QueryParameters *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__int(soap, &a->NextPageSize); - soap_default_xsd__string(soap, &a->SortFieldName); - soap_default_KMS_Agent__SortOrder(soap, &a->SortOrder); - soap_default_KMS_Agent__ArrayOfFilterParameters(soap, &a->FilterParameters); - soap_default_xsd__string(soap, &a->PreviousPageLastIDValue); - soap_default_xsd__string(soap, &a->PreviousPageLastSortFieldValue); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__QueryParameters(struct soap *soap, const struct KMS_Agent__QueryParameters *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->SortFieldName); - soap_serialize_KMS_Agent__ArrayOfFilterParameters(soap, &a->FilterParameters); - soap_serialize_xsd__string(soap, &a->PreviousPageLastIDValue); - soap_serialize_xsd__string(soap, &a->PreviousPageLastSortFieldValue); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__QueryParameters(struct soap *soap, const char *tag, int id, const struct KMS_Agent__QueryParameters *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters), type)) - return soap->error; - if (soap_out_xsd__int(soap, "NextPageSize", -1, &a->NextPageSize, "xsd:int")) - return soap->error; - if (soap_out_xsd__string(soap, "SortFieldName", -1, &a->SortFieldName, "xsd:string")) - return soap->error; - if (soap_out_KMS_Agent__SortOrder(soap, "SortOrder", -1, &a->SortOrder, "KMS-Agent:SortOrder")) - return soap->error; - if (soap_out_KMS_Agent__ArrayOfFilterParameters(soap, "FilterParameters", -1, &a->FilterParameters, "KMS-Agent:ArrayOfFilterParameters")) - return soap->error; - if (soap_out_xsd__string(soap, "PreviousPageLastIDValue", -1, &a->PreviousPageLastIDValue, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "PreviousPageLastSortFieldValue", -1, &a->PreviousPageLastSortFieldValue, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__QueryParameters * SOAP_FMAC4 soap_in_KMS_Agent__QueryParameters(struct soap *soap, const char *tag, struct KMS_Agent__QueryParameters *a, const char *type) -{ - size_t soap_flag_NextPageSize = 1; - size_t soap_flag_SortFieldName = 1; - size_t soap_flag_SortOrder = 1; - size_t soap_flag_FilterParameters = 1; - size_t soap_flag_PreviousPageLastIDValue = 1; - size_t soap_flag_PreviousPageLastSortFieldValue = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__QueryParameters *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters, sizeof(struct KMS_Agent__QueryParameters), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__QueryParameters(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_NextPageSize && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "NextPageSize", &a->NextPageSize, "xsd:int")) - { soap_flag_NextPageSize--; - continue; - } - if (soap_flag_SortFieldName && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "SortFieldName", &a->SortFieldName, "xsd:string")) - { soap_flag_SortFieldName--; - continue; - } - if (soap_flag_SortOrder && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__SortOrder(soap, "SortOrder", &a->SortOrder, "KMS-Agent:SortOrder")) - { soap_flag_SortOrder--; - continue; - } - if (soap_flag_FilterParameters && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__ArrayOfFilterParameters(soap, "FilterParameters", &a->FilterParameters, "KMS-Agent:ArrayOfFilterParameters")) - { soap_flag_FilterParameters--; - continue; - } - if (soap_flag_PreviousPageLastIDValue && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "PreviousPageLastIDValue", &a->PreviousPageLastIDValue, "xsd:string")) - { soap_flag_PreviousPageLastIDValue--; - continue; - } - if (soap_flag_PreviousPageLastSortFieldValue && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "PreviousPageLastSortFieldValue", &a->PreviousPageLastSortFieldValue, "xsd:string")) - { soap_flag_PreviousPageLastSortFieldValue--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__QueryParameters *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters, 0, sizeof(struct KMS_Agent__QueryParameters), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_NextPageSize > 0 || soap_flag_SortOrder > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__QueryParameters(struct soap *soap, const struct KMS_Agent__QueryParameters *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters); - if (soap_out_KMS_Agent__QueryParameters(soap, tag?tag:"KMS-Agent:QueryParameters", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__QueryParameters * SOAP_FMAC4 soap_get_KMS_Agent__QueryParameters(struct soap *soap, struct KMS_Agent__QueryParameters *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__QueryParameters(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__QueryParameters * SOAP_FMAC2 soap_instantiate_KMS_Agent__QueryParameters(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__QueryParameters(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__QueryParameters); - if (size) - *size = sizeof(struct KMS_Agent__QueryParameters); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__QueryParameters[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__QueryParameters); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__QueryParameters*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__QueryParameters(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__QueryParameters %p -> %p\n", q, p)); - *(struct KMS_Agent__QueryParameters*)p = *(struct KMS_Agent__QueryParameters*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, struct KMS_Agent__ArrayOfFilterParameters *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, struct KMS_Agent__ArrayOfFilterParameters const*a) -{ - int i; - if (a->__ptr && !soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters)) - for (i = 0; i < a->__size; i++) - { soap_embedded(soap, a->__ptr + i, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters); - soap_serialize_KMS_Agent__FilterParameters(soap, a->__ptr + i); - } -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, const char *tag, int id, const struct KMS_Agent__ArrayOfFilterParameters *a, const char *type) -{ - int i, n = a->__size; - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - for (i = 0; i < n; i++) - { - soap_out_KMS_Agent__FilterParameters(soap, "item", -1, &a->__ptr[i], "KMS-Agent:FilterParameters"); - } - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfFilterParameters * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, const char *tag, struct KMS_Agent__ArrayOfFilterParameters *a, const char *type) -{ int i, j; - struct KMS_Agent__FilterParameters *p; - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_array(soap, "KMS-Agent:FilterParameters") && soap_match_tag(soap, soap->type, type)) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct KMS_Agent__ArrayOfFilterParameters *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters, sizeof(struct KMS_Agent__ArrayOfFilterParameters), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__ArrayOfFilterParameters(soap, a); - if (soap->body && !*soap->href) - { - a->__size = soap_getsize(soap->arraySize, soap->arrayOffset, &j); - if (a->__size >= 0) - { a->__ptr = (struct KMS_Agent__FilterParameters *)soap_malloc(soap, sizeof(struct KMS_Agent__FilterParameters) * a->__size); - for (i = 0; i < a->__size; i++) - soap_default_KMS_Agent__FilterParameters(soap, a->__ptr+i); - for (i = 0; i < a->__size; i++) - { soap_peek_element(soap); - if (soap->position) - { i = soap->positions[0]-j; - if (i < 0 || i >= a->__size) - { soap->error = SOAP_IOB; - return NULL; - } - } - if (!soap_in_KMS_Agent__FilterParameters(soap, NULL, a->__ptr + i, "KMS-Agent:FilterParameters")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - } - else - { if (soap_new_block(soap) == NULL) - return NULL; - for (a->__size = 0; ; a->__size++) - { p = (struct KMS_Agent__FilterParameters *)soap_push_block(soap, NULL, sizeof(struct KMS_Agent__FilterParameters)); - if (!p) - return NULL; - soap_default_KMS_Agent__FilterParameters(soap, p); - if (!soap_in_KMS_Agent__FilterParameters(soap, NULL, p, "KMS-Agent:FilterParameters")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - soap_pop_block(soap, NULL); - a->__ptr = (struct KMS_Agent__FilterParameters *)soap_malloc(soap, soap->blist->size); - soap_save_block(soap, NULL, (char*)a->__ptr, 1); - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__ArrayOfFilterParameters *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters, 0, sizeof(struct KMS_Agent__ArrayOfFilterParameters), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, const struct KMS_Agent__ArrayOfFilterParameters *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters); - if (soap_out_KMS_Agent__ArrayOfFilterParameters(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfFilterParameters * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, struct KMS_Agent__ArrayOfFilterParameters *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__ArrayOfFilterParameters(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__ArrayOfFilterParameters * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__ArrayOfFilterParameters(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfFilterParameters); - if (size) - *size = sizeof(struct KMS_Agent__ArrayOfFilterParameters); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfFilterParameters[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__ArrayOfFilterParameters); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__ArrayOfFilterParameters*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfFilterParameters(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__ArrayOfFilterParameters %p -> %p\n", q, p)); - *(struct KMS_Agent__ArrayOfFilterParameters*)p = *(struct KMS_Agent__ArrayOfFilterParameters*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__FilterParameters(struct soap *soap, struct KMS_Agent__FilterParameters *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->FieldName); - soap_default_KMS_Agent__FilterOperator(soap, &a->FilterOperator); - soap_default_xsd__string(soap, &a->FieldValue); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__FilterParameters(struct soap *soap, const struct KMS_Agent__FilterParameters *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->FieldName); - soap_serialize_xsd__string(soap, &a->FieldValue); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__FilterParameters(struct soap *soap, const char *tag, int id, const struct KMS_Agent__FilterParameters *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters), type)) - return soap->error; - if (soap_out_xsd__string(soap, "FieldName", -1, &a->FieldName, "xsd:string")) - return soap->error; - if (soap_out_KMS_Agent__FilterOperator(soap, "FilterOperator", -1, &a->FilterOperator, "KMS-Agent:FilterOperator")) - return soap->error; - if (soap_out_xsd__string(soap, "FieldValue", -1, &a->FieldValue, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__FilterParameters * SOAP_FMAC4 soap_in_KMS_Agent__FilterParameters(struct soap *soap, const char *tag, struct KMS_Agent__FilterParameters *a, const char *type) -{ - size_t soap_flag_FieldName = 1; - size_t soap_flag_FilterOperator = 1; - size_t soap_flag_FieldValue = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Agent__FilterParameters *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters, sizeof(struct KMS_Agent__FilterParameters), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__FilterParameters(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_FieldName && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "FieldName", &a->FieldName, "xsd:string")) - { soap_flag_FieldName--; - continue; - } - if (soap_flag_FilterOperator && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Agent__FilterOperator(soap, "FilterOperator", &a->FilterOperator, "KMS-Agent:FilterOperator")) - { soap_flag_FilterOperator--; - continue; - } - if (soap_flag_FieldValue && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "FieldValue", &a->FieldValue, "xsd:string")) - { soap_flag_FieldValue--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__FilterParameters *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters, 0, sizeof(struct KMS_Agent__FilterParameters), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_FilterOperator > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__FilterParameters(struct soap *soap, const struct KMS_Agent__FilterParameters *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters); - if (soap_out_KMS_Agent__FilterParameters(soap, tag?tag:"KMS-Agent:FilterParameters", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__FilterParameters * SOAP_FMAC4 soap_get_KMS_Agent__FilterParameters(struct soap *soap, struct KMS_Agent__FilterParameters *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__FilterParameters(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__FilterParameters * SOAP_FMAC2 soap_instantiate_KMS_Agent__FilterParameters(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__FilterParameters(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__FilterParameters); - if (size) - *size = sizeof(struct KMS_Agent__FilterParameters); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__FilterParameters[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__FilterParameters); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__FilterParameters*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__FilterParameters(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__FilterParameters %p -> %p\n", q, p)); - *(struct KMS_Agent__FilterParameters*)p = *(struct KMS_Agent__FilterParameters*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfHexBinary(struct soap *soap, struct KMS_Agent__ArrayOfHexBinary *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfHexBinary(struct soap *soap, struct KMS_Agent__ArrayOfHexBinary const*a) -{ - int i; - if (a->__ptr && !soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary)) - for (i = 0; i < a->__size; i++) - { soap_embedded(soap, a->__ptr + i, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - soap_serialize_xsd__hexBinary(soap, a->__ptr + i); - } -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfHexBinary(struct soap *soap, const char *tag, int id, const struct KMS_Agent__ArrayOfHexBinary *a, const char *type) -{ - int i, n = a->__size; - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - for (i = 0; i < n; i++) - { - soap_out_xsd__hexBinary(soap, "item", -1, &a->__ptr[i], "xsd:hexBinary"); - } - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfHexBinary * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfHexBinary(struct soap *soap, const char *tag, struct KMS_Agent__ArrayOfHexBinary *a, const char *type) -{ int i, j; - struct xsd__hexBinary *p; - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_array(soap, "xsd:hexBinary") && soap_match_tag(soap, soap->type, type)) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct KMS_Agent__ArrayOfHexBinary *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary, sizeof(struct KMS_Agent__ArrayOfHexBinary), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Agent__ArrayOfHexBinary(soap, a); - if (soap->body && !*soap->href) - { - a->__size = soap_getsize(soap->arraySize, soap->arrayOffset, &j); - if (a->__size >= 0) - { a->__ptr = (struct xsd__hexBinary *)soap_malloc(soap, sizeof(struct xsd__hexBinary) * a->__size); - for (i = 0; i < a->__size; i++) - soap_default_xsd__hexBinary(soap, a->__ptr+i); - for (i = 0; i < a->__size; i++) - { soap_peek_element(soap); - if (soap->position) - { i = soap->positions[0]-j; - if (i < 0 || i >= a->__size) - { soap->error = SOAP_IOB; - return NULL; - } - } - if (!soap_in_xsd__hexBinary(soap, NULL, a->__ptr + i, "xsd:hexBinary")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - } - else - { if (soap_new_block(soap) == NULL) - return NULL; - for (a->__size = 0; ; a->__size++) - { p = (struct xsd__hexBinary *)soap_push_block(soap, NULL, sizeof(struct xsd__hexBinary)); - if (!p) - return NULL; - soap_default_xsd__hexBinary(soap, p); - if (!soap_in_xsd__hexBinary(soap, NULL, p, "xsd:hexBinary")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - soap_pop_block(soap, NULL); - a->__ptr = (struct xsd__hexBinary *)soap_malloc(soap, soap->blist->size); - soap_save_block(soap, NULL, (char*)a->__ptr, 1); - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Agent__ArrayOfHexBinary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary, 0, sizeof(struct KMS_Agent__ArrayOfHexBinary), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfHexBinary(struct soap *soap, const struct KMS_Agent__ArrayOfHexBinary *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary); - if (soap_out_KMS_Agent__ArrayOfHexBinary(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__ArrayOfHexBinary * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfHexBinary(struct soap *soap, struct KMS_Agent__ArrayOfHexBinary *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Agent__ArrayOfHexBinary(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Agent__ArrayOfHexBinary * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfHexBinary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Agent__ArrayOfHexBinary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfHexBinary); - if (size) - *size = sizeof(struct KMS_Agent__ArrayOfHexBinary); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Agent__ArrayOfHexBinary[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Agent__ArrayOfHexBinary); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Agent__ArrayOfHexBinary*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfHexBinary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Agent__ArrayOfHexBinary %p -> %p\n", q, p)); - *(struct KMS_Agent__ArrayOfHexBinary*)p = *(struct KMS_Agent__ArrayOfHexBinary*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary const*a) -{ - if (a->__ptr) - soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Agent_xsd__hexBinary); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap *soap, const char *tag, int id, const struct xsd__hexBinary *a, const char *type) -{ - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - if (soap_puthex(soap, a->__ptr, a->__size)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap *soap, const char *tag, struct xsd__hexBinary *a, const char *type) -{ - (void)type; /* appease -Wall -Werror */ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":hexBinary")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct xsd__hexBinary *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Agent_xsd__hexBinary, sizeof(struct xsd__hexBinary), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_xsd__hexBinary(soap, a); - if (soap->body && !*soap->href) - { - a->__ptr = soap_gethex(soap, &a->__size); - if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct xsd__hexBinary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Agent_xsd__hexBinary, 0, sizeof(struct xsd__hexBinary), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap *soap, const struct xsd__hexBinary *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - if (soap_out_xsd__hexBinary(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__hexBinary(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__hexBinary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Agent_xsd__hexBinary, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary); - if (size) - *size = sizeof(struct xsd__hexBinary); - } - else - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct xsd__hexBinary); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct xsd__hexBinary*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct xsd__hexBinary %p -> %p\n", q, p)); - *(struct xsd__hexBinary*)p = *(struct xsd__hexBinary*)q; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason)) - soap_serialize_SOAP_ENV__Reason(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Reason); - if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail)) - soap_serialize_SOAP_ENV__Detail(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Detail); - if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code)) - soap_serialize_SOAP_ENV__Code(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Code); - if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Agent__Key(struct soap *soap, struct KMS_Agent__Key *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_KMS_Agent__Key)) - soap_serialize_KMS_Agent__Key(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Agent__Key(struct soap *soap, const char *tag, int id, struct KMS_Agent__Key *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_KMS_Agent__Key); - if (id < 0) - return soap->error; - return soap_out_KMS_Agent__Key(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct KMS_Agent__Key ** SOAP_FMAC4 soap_in_PointerToKMS_Agent__Key(struct soap *soap, const char *tag, struct KMS_Agent__Key **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct KMS_Agent__Key **)soap_malloc(soap, sizeof(struct KMS_Agent__Key *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_KMS_Agent__Key(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct KMS_Agent__Key **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_KMS_Agent__Key, sizeof(struct KMS_Agent__Key), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Agent__Key(struct soap *soap, struct KMS_Agent__Key *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__Key); - if (soap_out_PointerToKMS_Agent__Key(soap, tag?tag:"KMS-Agent:Key", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__Key ** SOAP_FMAC4 soap_get_PointerToKMS_Agent__Key(struct soap *soap, struct KMS_Agent__Key **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToKMS_Agent__Key(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Agent__KeyGroup(struct soap *soap, struct KMS_Agent__KeyGroup *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup)) - soap_serialize_KMS_Agent__KeyGroup(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Agent__KeyGroup(struct soap *soap, const char *tag, int id, struct KMS_Agent__KeyGroup *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup); - if (id < 0) - return soap->error; - return soap_out_KMS_Agent__KeyGroup(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct KMS_Agent__KeyGroup ** SOAP_FMAC4 soap_in_PointerToKMS_Agent__KeyGroup(struct soap *soap, const char *tag, struct KMS_Agent__KeyGroup **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct KMS_Agent__KeyGroup **)soap_malloc(soap, sizeof(struct KMS_Agent__KeyGroup *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_KMS_Agent__KeyGroup(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct KMS_Agent__KeyGroup **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup, sizeof(struct KMS_Agent__KeyGroup), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Agent__KeyGroup(struct soap *soap, struct KMS_Agent__KeyGroup *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__KeyGroup); - if (soap_out_PointerToKMS_Agent__KeyGroup(soap, tag?tag:"KMS-Agent:KeyGroup", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__KeyGroup ** SOAP_FMAC4 soap_get_PointerToKMS_Agent__KeyGroup(struct soap *soap, struct KMS_Agent__KeyGroup **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToKMS_Agent__KeyGroup(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Agent__FilterParameters(struct soap *soap, struct KMS_Agent__FilterParameters *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters)) - soap_serialize_KMS_Agent__FilterParameters(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Agent__FilterParameters(struct soap *soap, const char *tag, int id, struct KMS_Agent__FilterParameters *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters); - if (id < 0) - return soap->error; - return soap_out_KMS_Agent__FilterParameters(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct KMS_Agent__FilterParameters ** SOAP_FMAC4 soap_in_PointerToKMS_Agent__FilterParameters(struct soap *soap, const char *tag, struct KMS_Agent__FilterParameters **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct KMS_Agent__FilterParameters **)soap_malloc(soap, sizeof(struct KMS_Agent__FilterParameters *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_KMS_Agent__FilterParameters(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct KMS_Agent__FilterParameters **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters, sizeof(struct KMS_Agent__FilterParameters), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Agent__FilterParameters(struct soap *soap, struct KMS_Agent__FilterParameters *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__FilterParameters); - if (soap_out_PointerToKMS_Agent__FilterParameters(soap, tag?tag:"KMS-Agent:FilterParameters", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Agent__FilterParameters ** SOAP_FMAC4 soap_get_PointerToKMS_Agent__FilterParameters(struct soap *soap, struct KMS_Agent__FilterParameters **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToKMS_Agent__FilterParameters(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToxsd__hexBinary(struct soap *soap, struct xsd__hexBinary *const*a) -{ - if (*a) - soap_serialize_xsd__hexBinary(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToxsd__hexBinary(struct soap *soap, const char *tag, int id, struct xsd__hexBinary *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, (struct soap_array*)&(*a)->__ptr, 1, type, SOAP_TYPE_KMS_Agent_xsd__hexBinary); - if (id < 0) - return soap->error; - return soap_out_xsd__hexBinary(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct xsd__hexBinary ** SOAP_FMAC4 soap_in_PointerToxsd__hexBinary(struct soap *soap, const char *tag, struct xsd__hexBinary **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct xsd__hexBinary **)soap_malloc(soap, sizeof(struct xsd__hexBinary *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_xsd__hexBinary(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct xsd__hexBinary **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_xsd__hexBinary, sizeof(struct xsd__hexBinary), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToxsd__hexBinary(struct soap *soap, struct xsd__hexBinary *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerToxsd__hexBinary); - if (soap_out_PointerToxsd__hexBinary(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct xsd__hexBinary ** SOAP_FMAC4 soap_get_PointerToxsd__hexBinary(struct soap *soap, struct xsd__hexBinary **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToxsd__hexBinary(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap *soap, unsigned char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_unsignedByte); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap *soap, const char *tag, int id, unsigned char *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Agent_unsignedByte); - if (id < 0) - return soap->error; - return soap_out_unsignedByte(soap, tag, id, *a, type); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap *soap, const char *tag, unsigned char **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (unsigned char **)soap_malloc(soap, sizeof(unsigned char *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_unsignedByte(soap, tag, *a, type))) - return NULL; - } - else - { a = (unsigned char **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Agent_unsignedByte, sizeof(unsigned char), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap *soap, unsigned char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_PointerTounsignedByte); - if (soap_out_PointerTounsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap *soap, unsigned char **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerTounsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_xsd__duration); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Agent_xsd__duration, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__duration); - if (soap_out_xsd__duration(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__duration(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_xsd__dateTime); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Agent_xsd__dateTime, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__dateTime); - if (soap_out_xsd__dateTime(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__dateTime(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_xsd__string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Agent_xsd__string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_xsd__string); - if (soap_out_xsd__string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent__QName); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Agent__QName, 2, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent__QName); - if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in__QName(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_string - *a = SOAP_DEFAULT_string; -#else - *a = (char *)0; -#endif -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_Agent_string); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Agent_string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Agent_string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Agent_string); - if (soap_out_string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -} // namespace KMS_Agent - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_AgentC.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_AgentClient.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_AgentClient.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,847 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_AgentClient.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/AgentService/KMS_Agent_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif -#include "KMS_AgentH.h" - -namespace KMS_Agent { - -SOAP_SOURCE_STAMP("@(#) KMS_AgentClient.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__ListKeyGroups(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__QueryParameters QueryParameters, struct KMS_Agent__ListKeyGroupsResponse &result) -{ struct KMS_Agent__ListKeyGroups soap_tmp_KMS_Agent__ListKeyGroups; - soap_tmp_KMS_Agent__ListKeyGroups.QueryParameters = QueryParameters; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__ListKeyGroups(soap, &soap_tmp_KMS_Agent__ListKeyGroups); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__ListKeyGroups(soap, &soap_tmp_KMS_Agent__ListKeyGroups, "KMS-Agent:ListKeyGroups", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__ListKeyGroups(soap, &soap_tmp_KMS_Agent__ListKeyGroups, "KMS-Agent:ListKeyGroups", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__ListKeyGroupsResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__ListKeyGroupsResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateDataUnit(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__CreateDataUnitResponse &result) -{ struct KMS_Agent__CreateDataUnit soap_tmp_KMS_Agent__CreateDataUnit; - soap_tmp_KMS_Agent__CreateDataUnit.ExternalUniqueID = ExternalUniqueID; - soap_tmp_KMS_Agent__CreateDataUnit.ExternalTag = ExternalTag; - soap_tmp_KMS_Agent__CreateDataUnit.Description = Description; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__CreateDataUnit(soap, &soap_tmp_KMS_Agent__CreateDataUnit); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateDataUnit(soap, &soap_tmp_KMS_Agent__CreateDataUnit, "KMS-Agent:CreateDataUnit", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateDataUnit(soap, &soap_tmp_KMS_Agent__CreateDataUnit, "KMS-Agent:CreateDataUnit", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__CreateDataUnitResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__CreateDataUnitResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnit(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *DataUnitID, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__RetrieveDataUnitResponse &result) -{ struct KMS_Agent__RetrieveDataUnit soap_tmp_KMS_Agent__RetrieveDataUnit; - soap_tmp_KMS_Agent__RetrieveDataUnit.DataUnitID = DataUnitID; - soap_tmp_KMS_Agent__RetrieveDataUnit.ExternalUniqueID = ExternalUniqueID; - soap_tmp_KMS_Agent__RetrieveDataUnit.ExternalTag = ExternalTag; - soap_tmp_KMS_Agent__RetrieveDataUnit.Description = Description; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveDataUnit(soap, &soap_tmp_KMS_Agent__RetrieveDataUnit); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnit(soap, &soap_tmp_KMS_Agent__RetrieveDataUnit, "KMS-Agent:RetrieveDataUnit", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnit(soap, &soap_tmp_KMS_Agent__RetrieveDataUnit, "KMS-Agent:RetrieveDataUnit", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveDataUnitResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveDataUnitResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse &result) -{ struct KMS_Agent__RetrieveDataUnitByExternalUniqueID soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID; - soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID.ExternalUniqueID = ExternalUniqueID; - soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID.ExternalTag = ExternalTag; - soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID.Description = Description; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID, "KMS-Agent:RetrieveDataUnitByExternalUniqueID", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitByExternalUniqueID, "KMS-Agent:RetrieveDataUnitByExternalUniqueID", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, struct KMS_Agent__DisassociateDataUnitKeysResponse &result) -{ struct KMS_Agent__DisassociateDataUnitKeys soap_tmp_KMS_Agent__DisassociateDataUnitKeys; - soap_tmp_KMS_Agent__DisassociateDataUnitKeys.DataUnit = DataUnit; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__DisassociateDataUnitKeys(soap, &soap_tmp_KMS_Agent__DisassociateDataUnitKeys); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__DisassociateDataUnitKeys(soap, &soap_tmp_KMS_Agent__DisassociateDataUnitKeys, "KMS-Agent:DisassociateDataUnitKeys", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__DisassociateDataUnitKeys(soap, &soap_tmp_KMS_Agent__DisassociateDataUnitKeys, "KMS-Agent:DisassociateDataUnitKeys", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__DisassociateDataUnitKeysResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__DisassociateDataUnitKeysResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__CreateKeyResponse &result) -{ struct KMS_Agent__CreateKey soap_tmp_KMS_Agent__CreateKey; - soap_tmp_KMS_Agent__CreateKey.DataUnit = DataUnit; - soap_tmp_KMS_Agent__CreateKey.KeyGroupID = KeyGroupID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__CreateKey(soap, &soap_tmp_KMS_Agent__CreateKey); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateKey(soap, &soap_tmp_KMS_Agent__CreateKey, "KMS-Agent:CreateKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateKey(soap, &soap_tmp_KMS_Agent__CreateKey, "KMS-Agent:CreateKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__CreateKeyResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__CreateKeyResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateKey2(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__CreateKey2Response &result) -{ struct KMS_Agent__CreateKey2 soap_tmp_KMS_Agent__CreateKey2; - soap_tmp_KMS_Agent__CreateKey2.DataUnit = DataUnit; - soap_tmp_KMS_Agent__CreateKey2.KeyGroupID = KeyGroupID; - soap_tmp_KMS_Agent__CreateKey2.AgentKWKID = AgentKWKID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__CreateKey2(soap, &soap_tmp_KMS_Agent__CreateKey2); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateKey2(soap, &soap_tmp_KMS_Agent__CreateKey2, "KMS-Agent:CreateKey2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateKey2(soap, &soap_tmp_KMS_Agent__CreateKey2, "KMS-Agent:CreateKey2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__CreateKey2Response(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__CreateKey2Response(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *KeyID, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__RetrieveKeyResponse &result) -{ struct KMS_Agent__RetrieveKey soap_tmp_KMS_Agent__RetrieveKey; - soap_tmp_KMS_Agent__RetrieveKey.KeyID = KeyID; - soap_tmp_KMS_Agent__RetrieveKey.DataUnit = DataUnit; - soap_tmp_KMS_Agent__RetrieveKey.KeyGroupID = KeyGroupID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveKey(soap, &soap_tmp_KMS_Agent__RetrieveKey); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveKey(soap, &soap_tmp_KMS_Agent__RetrieveKey, "KMS-Agent:RetrieveKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveKey(soap, &soap_tmp_KMS_Agent__RetrieveKey, "KMS-Agent:RetrieveKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveKeyResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveKeyResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveKey2(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *KeyID, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__RetrieveKey2Response &result) -{ struct KMS_Agent__RetrieveKey2 soap_tmp_KMS_Agent__RetrieveKey2; - soap_tmp_KMS_Agent__RetrieveKey2.KeyID = KeyID; - soap_tmp_KMS_Agent__RetrieveKey2.DataUnit = DataUnit; - soap_tmp_KMS_Agent__RetrieveKey2.KeyGroupID = KeyGroupID; - soap_tmp_KMS_Agent__RetrieveKey2.AgentKWKID = AgentKWKID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveKey2(soap, &soap_tmp_KMS_Agent__RetrieveKey2); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveKey2(soap, &soap_tmp_KMS_Agent__RetrieveKey2, "KMS-Agent:RetrieveKey2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveKey2(soap, &soap_tmp_KMS_Agent__RetrieveKey2, "KMS-Agent:RetrieveKey2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveKey2Response(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveKey2Response(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, long PageSize, long PageOffset, char *KeyID, struct KMS_Agent__RetrieveDataUnitKeysResponse &result) -{ struct KMS_Agent__RetrieveDataUnitKeys soap_tmp_KMS_Agent__RetrieveDataUnitKeys; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys.DataUnit = DataUnit; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys.PageSize = PageSize; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys.PageOffset = PageOffset; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys.KeyID = KeyID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveDataUnitKeys(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitKeys); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnitKeys(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitKeys, "KMS-Agent:RetrieveDataUnitKeys", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnitKeys(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitKeys, "KMS-Agent:RetrieveDataUnitKeys", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveDataUnitKeysResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveDataUnitKeysResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, long PageSize, long PageOffset, char *KeyID, char *AgentKWKID, struct KMS_Agent__RetrieveDataUnitKeys2Response &result) -{ struct KMS_Agent__RetrieveDataUnitKeys2 soap_tmp_KMS_Agent__RetrieveDataUnitKeys2; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys2.DataUnit = DataUnit; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys2.PageSize = PageSize; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys2.PageOffset = PageOffset; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys2.KeyID = KeyID; - soap_tmp_KMS_Agent__RetrieveDataUnitKeys2.AgentKWKID = AgentKWKID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveDataUnitKeys2(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitKeys2); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnitKeys2(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitKeys2, "KMS-Agent:RetrieveDataUnitKeys2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveDataUnitKeys2(soap, &soap_tmp_KMS_Agent__RetrieveDataUnitKeys2, "KMS-Agent:RetrieveDataUnitKeys2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveDataUnitKeys2Response(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveDataUnitKeys2Response(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse &result) -{ struct KMS_Agent__RetrieveProtectAndProcessKey soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey; - soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey.DataUnit = DataUnit; - soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey.KeyGroupID = KeyGroupID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey(soap, &soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveProtectAndProcessKey(soap, &soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey, "KMS-Agent:RetrieveProtectAndProcessKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveProtectAndProcessKey(soap, &soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey, "KMS-Agent:RetrieveProtectAndProcessKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__RetrieveProtectAndProcessKey2Response &result) -{ struct KMS_Agent__RetrieveProtectAndProcessKey2 soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2; - soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2.DataUnit = DataUnit; - soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2.KeyGroupID = KeyGroupID; - soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2.AgentKWKID = AgentKWKID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2(soap, &soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveProtectAndProcessKey2(soap, &soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2, "KMS-Agent:RetrieveProtectAndProcessKey2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RetrieveProtectAndProcessKey2(soap, &soap_tmp_KMS_Agent__RetrieveProtectAndProcessKey2, "KMS-Agent:RetrieveProtectAndProcessKey2", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateAuditLog(struct soap *soap, const char *soap_endpoint, const char *soap_action, enum KMS_Agent__AuditLogRetention Retention, enum KMS_Agent__AuditLogCondition Condition, bool IssueAlert, char *Message, struct KMS_Agent__CreateAuditLogResponse &result) -{ struct KMS_Agent__CreateAuditLog soap_tmp_KMS_Agent__CreateAuditLog; - soap_tmp_KMS_Agent__CreateAuditLog.Retention = Retention; - soap_tmp_KMS_Agent__CreateAuditLog.Condition = Condition; - soap_tmp_KMS_Agent__CreateAuditLog.IssueAlert = IssueAlert; - soap_tmp_KMS_Agent__CreateAuditLog.Message = Message; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__CreateAuditLog(soap, &soap_tmp_KMS_Agent__CreateAuditLog); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateAuditLog(soap, &soap_tmp_KMS_Agent__CreateAuditLog, "KMS-Agent:CreateAuditLog", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__CreateAuditLog(soap, &soap_tmp_KMS_Agent__CreateAuditLog, "KMS-Agent:CreateAuditLog", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__CreateAuditLogResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__CreateAuditLogResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__GetAgentKWKPublicKeyResponse &result) -{ struct KMS_Agent__GetAgentKWKPublicKey soap_tmp_KMS_Agent__GetAgentKWKPublicKey; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__GetAgentKWKPublicKey(soap, &soap_tmp_KMS_Agent__GetAgentKWKPublicKey); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__GetAgentKWKPublicKey(soap, &soap_tmp_KMS_Agent__GetAgentKWKPublicKey, "KMS-Agent:GetAgentKWKPublicKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__GetAgentKWKPublicKey(soap, &soap_tmp_KMS_Agent__GetAgentKWKPublicKey, "KMS-Agent:GetAgentKWKPublicKey", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RegisterAgentKWK(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct xsd__hexBinary AgentKWK, struct KMS_Agent__RegisterAgentKWKResponse &result) -{ struct KMS_Agent__RegisterAgentKWK soap_tmp_KMS_Agent__RegisterAgentKWK; - soap_tmp_KMS_Agent__RegisterAgentKWK.AgentKWK = AgentKWK; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Agent__RegisterAgentKWK(soap, &soap_tmp_KMS_Agent__RegisterAgentKWK); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RegisterAgentKWK(soap, &soap_tmp_KMS_Agent__RegisterAgentKWK, "KMS-Agent:RegisterAgentKWK", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Agent__RegisterAgentKWK(soap, &soap_tmp_KMS_Agent__RegisterAgentKWK, "KMS-Agent:RegisterAgentKWK", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Agent__RegisterAgentKWKResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Agent__RegisterAgentKWKResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -} // namespace KMS_Agent - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_AgentClient.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_AgentH.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_AgentH.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1827 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_AgentH.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/AgentService/KMS_Agent_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_AgentH_H -#define KMS_AgentH_H -#include "KMS_AgentStub.h" - -namespace KMS_Agent { -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); -SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_byte -#define SOAP_TYPE_KMS_Agent_byte (3) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); - -#define soap_write_byte(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); - -#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_int -#define SOAP_TYPE_KMS_Agent_int (1) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); - -#define soap_write_int(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); - -#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__int -#define SOAP_TYPE_KMS_Agent_xsd__int (11) -#endif - -#define soap_default_xsd__int(soap, a) soap_default_long(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap*, const char*, long *, const char*); - -#define soap_write_xsd__int(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_xsd__int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap*, const long *, const char*, const char*); - -#define soap_read_xsd__int(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_long -#define SOAP_TYPE_KMS_Agent_long (10) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap*, long *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap*, const char*, long *, const char*); - -#define soap_write_long(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap*, const long *, const char*, const char*); - -#define soap_read_long(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__long -#define SOAP_TYPE_KMS_Agent_xsd__long (15) -#endif - -#define soap_default_xsd__long(soap, a) soap_default_LONG64(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_xsd__long(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_xsd__long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_xsd__long(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_LONG64 -#define SOAP_TYPE_KMS_Agent_LONG64 (14) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap*, LONG64 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_LONG64(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_LONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_LONG64(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_LONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__float -#define SOAP_TYPE_KMS_Agent_xsd__float (9) -#endif - -#define soap_default_xsd__float(soap, a) soap_default_float(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap*, const char*, float *, const char*); - -#define soap_write_xsd__float(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_xsd__float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap*, const float *, const char*, const char*); - -#define soap_read_xsd__float(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_float -#define SOAP_TYPE_KMS_Agent_float (8) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap*, float *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap*, const char*, float *, const char*); - -#define soap_write_float(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap*, const float *, const char*, const char*); - -#define soap_read_float(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_unsignedByte -#define SOAP_TYPE_KMS_Agent_unsignedByte (20) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap*, unsigned char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap*, const char*, unsigned char *, const char*); - -#define soap_write_unsignedByte(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap*, const unsigned char *, const char*, const char*); - -#define soap_read_unsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap*, unsigned char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_unsignedInt -#define SOAP_TYPE_KMS_Agent_unsignedInt (19) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap*, unsigned int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap*, const char*, int, const unsigned int *, const char*); -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap*, const char*, unsigned int *, const char*); - -#define soap_write_unsignedInt(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_unsignedInt(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap*, const unsigned int *, const char*, const char*); - -#define soap_read_unsignedInt(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap*, unsigned int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition -#define SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition (41) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__AuditLogCondition(struct soap*, enum KMS_Agent__AuditLogCondition *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__AuditLogCondition(struct soap*, const char*, int, const enum KMS_Agent__AuditLogCondition *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__AuditLogCondition2s(struct soap*, enum KMS_Agent__AuditLogCondition); -SOAP_FMAC3 enum KMS_Agent__AuditLogCondition * SOAP_FMAC4 soap_in_KMS_Agent__AuditLogCondition(struct soap*, const char*, enum KMS_Agent__AuditLogCondition *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__AuditLogCondition(struct soap*, const char*, enum KMS_Agent__AuditLogCondition *); - -#define soap_write_KMS_Agent__AuditLogCondition(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__AuditLogCondition(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__AuditLogCondition(struct soap*, const enum KMS_Agent__AuditLogCondition *, const char*, const char*); - -#define soap_read_KMS_Agent__AuditLogCondition(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__AuditLogCondition(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__AuditLogCondition * SOAP_FMAC4 soap_get_KMS_Agent__AuditLogCondition(struct soap*, enum KMS_Agent__AuditLogCondition *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention -#define SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention (40) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__AuditLogRetention(struct soap*, enum KMS_Agent__AuditLogRetention *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__AuditLogRetention(struct soap*, const char*, int, const enum KMS_Agent__AuditLogRetention *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__AuditLogRetention2s(struct soap*, enum KMS_Agent__AuditLogRetention); -SOAP_FMAC3 enum KMS_Agent__AuditLogRetention * SOAP_FMAC4 soap_in_KMS_Agent__AuditLogRetention(struct soap*, const char*, enum KMS_Agent__AuditLogRetention *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__AuditLogRetention(struct soap*, const char*, enum KMS_Agent__AuditLogRetention *); - -#define soap_write_KMS_Agent__AuditLogRetention(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__AuditLogRetention(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__AuditLogRetention(struct soap*, const enum KMS_Agent__AuditLogRetention *, const char*, const char*); - -#define soap_read_KMS_Agent__AuditLogRetention(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__AuditLogRetention(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__AuditLogRetention * SOAP_FMAC4 soap_get_KMS_Agent__AuditLogRetention(struct soap*, enum KMS_Agent__AuditLogRetention *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState (32) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DataUnitState(struct soap*, enum KMS_Agent__DataUnitState *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DataUnitState(struct soap*, const char*, int, const enum KMS_Agent__DataUnitState *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__DataUnitState2s(struct soap*, enum KMS_Agent__DataUnitState); -SOAP_FMAC3 enum KMS_Agent__DataUnitState * SOAP_FMAC4 soap_in_KMS_Agent__DataUnitState(struct soap*, const char*, enum KMS_Agent__DataUnitState *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__DataUnitState(struct soap*, const char*, enum KMS_Agent__DataUnitState *); - -#define soap_write_KMS_Agent__DataUnitState(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__DataUnitState(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DataUnitState(struct soap*, const enum KMS_Agent__DataUnitState *, const char*, const char*); - -#define soap_read_KMS_Agent__DataUnitState(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__DataUnitState(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__DataUnitState * SOAP_FMAC4 soap_get_KMS_Agent__DataUnitState(struct soap*, enum KMS_Agent__DataUnitState *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState -#define SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState (31) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__KeyState(struct soap*, enum KMS_Agent__KeyState *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__KeyState(struct soap*, const char*, int, const enum KMS_Agent__KeyState *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__KeyState2s(struct soap*, enum KMS_Agent__KeyState); -SOAP_FMAC3 enum KMS_Agent__KeyState * SOAP_FMAC4 soap_in_KMS_Agent__KeyState(struct soap*, const char*, enum KMS_Agent__KeyState *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__KeyState(struct soap*, const char*, enum KMS_Agent__KeyState *); - -#define soap_write_KMS_Agent__KeyState(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__KeyState(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__KeyState(struct soap*, const enum KMS_Agent__KeyState *, const char*, const char*); - -#define soap_read_KMS_Agent__KeyState(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__KeyState(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__KeyState * SOAP_FMAC4 soap_get_KMS_Agent__KeyState(struct soap*, enum KMS_Agent__KeyState *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType -#define SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType (30) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__KeyType(struct soap*, enum KMS_Agent__KeyType *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__KeyType(struct soap*, const char*, int, const enum KMS_Agent__KeyType *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__KeyType2s(struct soap*, enum KMS_Agent__KeyType); -SOAP_FMAC3 enum KMS_Agent__KeyType * SOAP_FMAC4 soap_in_KMS_Agent__KeyType(struct soap*, const char*, enum KMS_Agent__KeyType *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__KeyType(struct soap*, const char*, enum KMS_Agent__KeyType *); - -#define soap_write_KMS_Agent__KeyType(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__KeyType(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__KeyType(struct soap*, const enum KMS_Agent__KeyType *, const char*, const char*); - -#define soap_read_KMS_Agent__KeyType(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__KeyType(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__KeyType * SOAP_FMAC4 soap_get_KMS_Agent__KeyType(struct soap*, enum KMS_Agent__KeyType *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator -#define SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator (25) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__FilterOperator(struct soap*, enum KMS_Agent__FilterOperator *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__FilterOperator(struct soap*, const char*, int, const enum KMS_Agent__FilterOperator *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__FilterOperator2s(struct soap*, enum KMS_Agent__FilterOperator); -SOAP_FMAC3 enum KMS_Agent__FilterOperator * SOAP_FMAC4 soap_in_KMS_Agent__FilterOperator(struct soap*, const char*, enum KMS_Agent__FilterOperator *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__FilterOperator(struct soap*, const char*, enum KMS_Agent__FilterOperator *); - -#define soap_write_KMS_Agent__FilterOperator(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__FilterOperator(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__FilterOperator(struct soap*, const enum KMS_Agent__FilterOperator *, const char*, const char*); - -#define soap_read_KMS_Agent__FilterOperator(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__FilterOperator(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__FilterOperator * SOAP_FMAC4 soap_get_KMS_Agent__FilterOperator(struct soap*, enum KMS_Agent__FilterOperator *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder -#define SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder (24) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__SortOrder(struct soap*, enum KMS_Agent__SortOrder *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__SortOrder(struct soap*, const char*, int, const enum KMS_Agent__SortOrder *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_KMS_Agent__SortOrder2s(struct soap*, enum KMS_Agent__SortOrder); -SOAP_FMAC3 enum KMS_Agent__SortOrder * SOAP_FMAC4 soap_in_KMS_Agent__SortOrder(struct soap*, const char*, enum KMS_Agent__SortOrder *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2KMS_Agent__SortOrder(struct soap*, const char*, enum KMS_Agent__SortOrder *); - -#define soap_write_KMS_Agent__SortOrder(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_KMS_Agent__SortOrder(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__SortOrder(struct soap*, const enum KMS_Agent__SortOrder *, const char*, const char*); - -#define soap_read_KMS_Agent__SortOrder(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__SortOrder(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 enum KMS_Agent__SortOrder * SOAP_FMAC4 soap_get_KMS_Agent__SortOrder(struct soap*, enum KMS_Agent__SortOrder *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__boolean -#define SOAP_TYPE_KMS_Agent_xsd__boolean (13) -#endif - -#define soap_default_xsd__boolean(soap, a) soap_default_bool(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap*, const char*, bool *); - -#define soap_write_xsd__boolean(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_xsd__boolean(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap*, const bool *, const char*, const char*); - -#define soap_read_xsd__boolean(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__boolean(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap*, bool *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_bool -#define SOAP_TYPE_KMS_Agent_bool (12) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap*, bool *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap*, const char*, bool *); - -#define soap_write_bool(soap, data) ( soap_begin_send(soap) || KMS_Agent::soap_put_bool(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap*, const bool *, const char*, const char*); - -#define soap_read_bool(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_bool(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap*, bool *, const char*, const char*); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault (113) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); - -#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || KMS_Agent::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason (112) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); - -#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || KMS_Agent::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail (111) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); - -#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || KMS_Agent::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Code -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Code (109) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); - -#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_SOAP_ENV__Code(soap, data), 0) || KMS_Agent::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Header -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Header (108) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); - -#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_SOAP_ENV__Header(soap, data), 0) || KMS_Agent::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK (107) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RegisterAgentKWK(struct soap*, struct KMS_Agent__RegisterAgentKWK *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RegisterAgentKWK(struct soap*, const struct KMS_Agent__RegisterAgentKWK *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RegisterAgentKWK(struct soap*, const char*, int, const struct KMS_Agent__RegisterAgentKWK *, const char*); -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWK * SOAP_FMAC4 soap_in_KMS_Agent__RegisterAgentKWK(struct soap*, const char*, struct KMS_Agent__RegisterAgentKWK *, const char*); - -#define soap_write_KMS_Agent__RegisterAgentKWK(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RegisterAgentKWK(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RegisterAgentKWK(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RegisterAgentKWK(struct soap*, const struct KMS_Agent__RegisterAgentKWK *, const char*, const char*); - -#define soap_read_KMS_Agent__RegisterAgentKWK(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RegisterAgentKWK(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWK * SOAP_FMAC4 soap_get_KMS_Agent__RegisterAgentKWK(struct soap*, struct KMS_Agent__RegisterAgentKWK *, const char*, const char*); - -#define soap_new_KMS_Agent__RegisterAgentKWK(soap, n) soap_instantiate_KMS_Agent__RegisterAgentKWK(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RegisterAgentKWK(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RegisterAgentKWK * SOAP_FMAC2 soap_instantiate_KMS_Agent__RegisterAgentKWK(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RegisterAgentKWK(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse (104) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RegisterAgentKWKResponse(struct soap*, struct KMS_Agent__RegisterAgentKWKResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RegisterAgentKWKResponse(struct soap*, const struct KMS_Agent__RegisterAgentKWKResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RegisterAgentKWKResponse(struct soap*, const char*, int, const struct KMS_Agent__RegisterAgentKWKResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWKResponse * SOAP_FMAC4 soap_in_KMS_Agent__RegisterAgentKWKResponse(struct soap*, const char*, struct KMS_Agent__RegisterAgentKWKResponse *, const char*); - -#define soap_write_KMS_Agent__RegisterAgentKWKResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RegisterAgentKWKResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RegisterAgentKWKResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RegisterAgentKWKResponse(struct soap*, const struct KMS_Agent__RegisterAgentKWKResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__RegisterAgentKWKResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RegisterAgentKWKResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RegisterAgentKWKResponse * SOAP_FMAC4 soap_get_KMS_Agent__RegisterAgentKWKResponse(struct soap*, struct KMS_Agent__RegisterAgentKWKResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__RegisterAgentKWKResponse(soap, n) soap_instantiate_KMS_Agent__RegisterAgentKWKResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RegisterAgentKWKResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RegisterAgentKWKResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RegisterAgentKWKResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RegisterAgentKWKResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey (103) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__GetAgentKWKPublicKey(struct soap*, struct KMS_Agent__GetAgentKWKPublicKey *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__GetAgentKWKPublicKey(struct soap*, const struct KMS_Agent__GetAgentKWKPublicKey *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__GetAgentKWKPublicKey(struct soap*, const char*, int, const struct KMS_Agent__GetAgentKWKPublicKey *, const char*); -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKey * SOAP_FMAC4 soap_in_KMS_Agent__GetAgentKWKPublicKey(struct soap*, const char*, struct KMS_Agent__GetAgentKWKPublicKey *, const char*); - -#define soap_write_KMS_Agent__GetAgentKWKPublicKey(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__GetAgentKWKPublicKey(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__GetAgentKWKPublicKey(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__GetAgentKWKPublicKey(struct soap*, const struct KMS_Agent__GetAgentKWKPublicKey *, const char*, const char*); - -#define soap_read_KMS_Agent__GetAgentKWKPublicKey(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__GetAgentKWKPublicKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKey * SOAP_FMAC4 soap_get_KMS_Agent__GetAgentKWKPublicKey(struct soap*, struct KMS_Agent__GetAgentKWKPublicKey *, const char*, const char*); - -#define soap_new_KMS_Agent__GetAgentKWKPublicKey(soap, n) soap_instantiate_KMS_Agent__GetAgentKWKPublicKey(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__GetAgentKWKPublicKey(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__GetAgentKWKPublicKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__GetAgentKWKPublicKey(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__GetAgentKWKPublicKey(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse (100) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, struct KMS_Agent__GetAgentKWKPublicKeyResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, const struct KMS_Agent__GetAgentKWKPublicKeyResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, const char*, int, const struct KMS_Agent__GetAgentKWKPublicKeyResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, const char*, struct KMS_Agent__GetAgentKWKPublicKeyResponse *, const char*); - -#define soap_write_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, const struct KMS_Agent__GetAgentKWKPublicKeyResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__GetAgentKWKPublicKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, struct KMS_Agent__GetAgentKWKPublicKeyResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, n) soap_instantiate_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__GetAgentKWKPublicKeyResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__GetAgentKWKPublicKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__GetAgentKWKPublicKeyResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog (99) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateAuditLog(struct soap*, struct KMS_Agent__CreateAuditLog *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateAuditLog(struct soap*, const struct KMS_Agent__CreateAuditLog *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateAuditLog(struct soap*, const char*, int, const struct KMS_Agent__CreateAuditLog *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateAuditLog * SOAP_FMAC4 soap_in_KMS_Agent__CreateAuditLog(struct soap*, const char*, struct KMS_Agent__CreateAuditLog *, const char*); - -#define soap_write_KMS_Agent__CreateAuditLog(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateAuditLog(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateAuditLog(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateAuditLog(struct soap*, const struct KMS_Agent__CreateAuditLog *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateAuditLog(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateAuditLog(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateAuditLog * SOAP_FMAC4 soap_get_KMS_Agent__CreateAuditLog(struct soap*, struct KMS_Agent__CreateAuditLog *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateAuditLog(soap, n) soap_instantiate_KMS_Agent__CreateAuditLog(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateAuditLog(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateAuditLog * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateAuditLog(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateAuditLog(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse (96) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateAuditLogResponse(struct soap*, struct KMS_Agent__CreateAuditLogResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateAuditLogResponse(struct soap*, const struct KMS_Agent__CreateAuditLogResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateAuditLogResponse(struct soap*, const char*, int, const struct KMS_Agent__CreateAuditLogResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateAuditLogResponse * SOAP_FMAC4 soap_in_KMS_Agent__CreateAuditLogResponse(struct soap*, const char*, struct KMS_Agent__CreateAuditLogResponse *, const char*); - -#define soap_write_KMS_Agent__CreateAuditLogResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateAuditLogResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateAuditLogResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateAuditLogResponse(struct soap*, const struct KMS_Agent__CreateAuditLogResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateAuditLogResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateAuditLogResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateAuditLogResponse * SOAP_FMAC4 soap_get_KMS_Agent__CreateAuditLogResponse(struct soap*, struct KMS_Agent__CreateAuditLogResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateAuditLogResponse(soap, n) soap_instantiate_KMS_Agent__CreateAuditLogResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateAuditLogResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateAuditLogResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateAuditLogResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateAuditLogResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2 (95) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKey2 *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKey2 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, const char*, int, const struct KMS_Agent__RetrieveProtectAndProcessKey2 *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2 * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, const char*, struct KMS_Agent__RetrieveProtectAndProcessKey2 *, const char*); - -#define soap_write_KMS_Agent__RetrieveProtectAndProcessKey2(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveProtectAndProcessKey2(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKey2 *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveProtectAndProcessKey2(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveProtectAndProcessKey2(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2 * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKey2 *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveProtectAndProcessKey2(soap, n) soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveProtectAndProcessKey2(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKey2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response (92) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKey2Response *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, const char*, int, const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2Response * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, const char*, struct KMS_Agent__RetrieveProtectAndProcessKey2Response *, const char*); - -#define soap_write_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKey2Response *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey2Response * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKey2Response *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, n) soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveProtectAndProcessKey2Response(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKey2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKey2Response(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey (91) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKey *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKey *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, const char*, int, const struct KMS_Agent__RetrieveProtectAndProcessKey *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, const char*, struct KMS_Agent__RetrieveProtectAndProcessKey *, const char*); - -#define soap_write_KMS_Agent__RetrieveProtectAndProcessKey(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveProtectAndProcessKey(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveProtectAndProcessKey(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKey *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveProtectAndProcessKey(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveProtectAndProcessKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKey * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKey *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveProtectAndProcessKey(soap, n) soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveProtectAndProcessKey(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse (88) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, const char*, int, const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, const char*, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *, const char*); - -#define soap_write_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, const struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveProtectAndProcessKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, n) soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveProtectAndProcessKeyResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveProtectAndProcessKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveProtectAndProcessKeyResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2 (87) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, struct KMS_Agent__RetrieveDataUnitKeys2 *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeys2 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitKeys2 *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2 * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitKeys2 *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitKeys2(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitKeys2(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitKeys2(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeys2 *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitKeys2(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitKeys2(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2 * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, struct KMS_Agent__RetrieveDataUnitKeys2 *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitKeys2(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitKeys2(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeys2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeys2(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response (84) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, struct KMS_Agent__RetrieveDataUnitKeys2Response *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeys2Response *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitKeys2Response *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2Response * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitKeys2Response *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitKeys2Response(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitKeys2Response(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitKeys2Response(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeys2Response *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitKeys2Response(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitKeys2Response(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys2Response * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, struct KMS_Agent__RetrieveDataUnitKeys2Response *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitKeys2Response(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2Response(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitKeys2Response(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeys2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeys2Response(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys (83) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeys(struct soap*, struct KMS_Agent__RetrieveDataUnitKeys *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeys(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeys *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeys(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitKeys *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeys(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitKeys *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitKeys(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitKeys(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitKeys(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeys(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeys *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitKeys(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitKeys(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeys * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeys(struct soap*, struct KMS_Agent__RetrieveDataUnitKeys *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitKeys(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitKeys(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitKeys(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeys * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeys(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeys(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse (80) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, struct KMS_Agent__RetrieveDataUnitKeysResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeysResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitKeysResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeysResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitKeysResponse *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitKeysResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitKeysResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitKeysResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, const struct KMS_Agent__RetrieveDataUnitKeysResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitKeysResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitKeysResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitKeysResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, struct KMS_Agent__RetrieveDataUnitKeysResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitKeysResponse(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitKeysResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitKeysResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitKeysResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitKeysResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2 (79) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKey2(struct soap*, struct KMS_Agent__RetrieveKey2 *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKey2(struct soap*, const struct KMS_Agent__RetrieveKey2 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKey2(struct soap*, const char*, int, const struct KMS_Agent__RetrieveKey2 *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2 * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKey2(struct soap*, const char*, struct KMS_Agent__RetrieveKey2 *, const char*); - -#define soap_write_KMS_Agent__RetrieveKey2(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveKey2(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveKey2(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKey2(struct soap*, const struct KMS_Agent__RetrieveKey2 *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveKey2(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveKey2(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2 * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKey2(struct soap*, struct KMS_Agent__RetrieveKey2 *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveKey2(soap, n) soap_instantiate_KMS_Agent__RetrieveKey2(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveKey2(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveKey2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKey2(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKey2(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response (76) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKey2Response(struct soap*, struct KMS_Agent__RetrieveKey2Response *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKey2Response(struct soap*, const struct KMS_Agent__RetrieveKey2Response *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKey2Response(struct soap*, const char*, int, const struct KMS_Agent__RetrieveKey2Response *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2Response * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKey2Response(struct soap*, const char*, struct KMS_Agent__RetrieveKey2Response *, const char*); - -#define soap_write_KMS_Agent__RetrieveKey2Response(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveKey2Response(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveKey2Response(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKey2Response(struct soap*, const struct KMS_Agent__RetrieveKey2Response *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveKey2Response(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveKey2Response(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey2Response * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKey2Response(struct soap*, struct KMS_Agent__RetrieveKey2Response *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveKey2Response(soap, n) soap_instantiate_KMS_Agent__RetrieveKey2Response(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveKey2Response(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveKey2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKey2Response(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKey2Response(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey (75) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKey(struct soap*, struct KMS_Agent__RetrieveKey *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKey(struct soap*, const struct KMS_Agent__RetrieveKey *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKey(struct soap*, const char*, int, const struct KMS_Agent__RetrieveKey *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveKey * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKey(struct soap*, const char*, struct KMS_Agent__RetrieveKey *, const char*); - -#define soap_write_KMS_Agent__RetrieveKey(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveKey(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveKey(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKey(struct soap*, const struct KMS_Agent__RetrieveKey *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveKey(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveKey * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKey(struct soap*, struct KMS_Agent__RetrieveKey *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveKey(soap, n) soap_instantiate_KMS_Agent__RetrieveKey(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveKey(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKey(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKey(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse (72) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveKeyResponse(struct soap*, struct KMS_Agent__RetrieveKeyResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveKeyResponse(struct soap*, const struct KMS_Agent__RetrieveKeyResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveKeyResponse(struct soap*, const char*, int, const struct KMS_Agent__RetrieveKeyResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveKeyResponse(struct soap*, const char*, struct KMS_Agent__RetrieveKeyResponse *, const char*); - -#define soap_write_KMS_Agent__RetrieveKeyResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveKeyResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveKeyResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveKeyResponse(struct soap*, const struct KMS_Agent__RetrieveKeyResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveKeyResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveKeyResponse(struct soap*, struct KMS_Agent__RetrieveKeyResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveKeyResponse(soap, n) soap_instantiate_KMS_Agent__RetrieveKeyResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveKeyResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveKeyResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveKeyResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2 (71) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKey2(struct soap*, struct KMS_Agent__CreateKey2 *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKey2(struct soap*, const struct KMS_Agent__CreateKey2 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKey2(struct soap*, const char*, int, const struct KMS_Agent__CreateKey2 *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateKey2 * SOAP_FMAC4 soap_in_KMS_Agent__CreateKey2(struct soap*, const char*, struct KMS_Agent__CreateKey2 *, const char*); - -#define soap_write_KMS_Agent__CreateKey2(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateKey2(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateKey2(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKey2(struct soap*, const struct KMS_Agent__CreateKey2 *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateKey2(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateKey2(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateKey2 * SOAP_FMAC4 soap_get_KMS_Agent__CreateKey2(struct soap*, struct KMS_Agent__CreateKey2 *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateKey2(soap, n) soap_instantiate_KMS_Agent__CreateKey2(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateKey2(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateKey2 * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKey2(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKey2(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response (68) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKey2Response(struct soap*, struct KMS_Agent__CreateKey2Response *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKey2Response(struct soap*, const struct KMS_Agent__CreateKey2Response *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKey2Response(struct soap*, const char*, int, const struct KMS_Agent__CreateKey2Response *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateKey2Response * SOAP_FMAC4 soap_in_KMS_Agent__CreateKey2Response(struct soap*, const char*, struct KMS_Agent__CreateKey2Response *, const char*); - -#define soap_write_KMS_Agent__CreateKey2Response(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateKey2Response(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateKey2Response(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKey2Response(struct soap*, const struct KMS_Agent__CreateKey2Response *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateKey2Response(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateKey2Response(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateKey2Response * SOAP_FMAC4 soap_get_KMS_Agent__CreateKey2Response(struct soap*, struct KMS_Agent__CreateKey2Response *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateKey2Response(soap, n) soap_instantiate_KMS_Agent__CreateKey2Response(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateKey2Response(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateKey2Response * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKey2Response(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKey2Response(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey (67) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKey(struct soap*, struct KMS_Agent__CreateKey *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKey(struct soap*, const struct KMS_Agent__CreateKey *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKey(struct soap*, const char*, int, const struct KMS_Agent__CreateKey *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateKey * SOAP_FMAC4 soap_in_KMS_Agent__CreateKey(struct soap*, const char*, struct KMS_Agent__CreateKey *, const char*); - -#define soap_write_KMS_Agent__CreateKey(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateKey(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateKey(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKey(struct soap*, const struct KMS_Agent__CreateKey *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateKey(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateKey * SOAP_FMAC4 soap_get_KMS_Agent__CreateKey(struct soap*, struct KMS_Agent__CreateKey *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateKey(soap, n) soap_instantiate_KMS_Agent__CreateKey(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateKey(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateKey * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKey(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKey(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse (64) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateKeyResponse(struct soap*, struct KMS_Agent__CreateKeyResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateKeyResponse(struct soap*, const struct KMS_Agent__CreateKeyResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateKeyResponse(struct soap*, const char*, int, const struct KMS_Agent__CreateKeyResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateKeyResponse * SOAP_FMAC4 soap_in_KMS_Agent__CreateKeyResponse(struct soap*, const char*, struct KMS_Agent__CreateKeyResponse *, const char*); - -#define soap_write_KMS_Agent__CreateKeyResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateKeyResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateKeyResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateKeyResponse(struct soap*, const struct KMS_Agent__CreateKeyResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateKeyResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateKeyResponse * SOAP_FMAC4 soap_get_KMS_Agent__CreateKeyResponse(struct soap*, struct KMS_Agent__CreateKeyResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateKeyResponse(soap, n) soap_instantiate_KMS_Agent__CreateKeyResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateKeyResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateKeyResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateKeyResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateKeyResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys (63) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DisassociateDataUnitKeys(struct soap*, struct KMS_Agent__DisassociateDataUnitKeys *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__DisassociateDataUnitKeys(struct soap*, const struct KMS_Agent__DisassociateDataUnitKeys *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DisassociateDataUnitKeys(struct soap*, const char*, int, const struct KMS_Agent__DisassociateDataUnitKeys *, const char*); -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeys * SOAP_FMAC4 soap_in_KMS_Agent__DisassociateDataUnitKeys(struct soap*, const char*, struct KMS_Agent__DisassociateDataUnitKeys *, const char*); - -#define soap_write_KMS_Agent__DisassociateDataUnitKeys(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__DisassociateDataUnitKeys(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__DisassociateDataUnitKeys(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DisassociateDataUnitKeys(struct soap*, const struct KMS_Agent__DisassociateDataUnitKeys *, const char*, const char*); - -#define soap_read_KMS_Agent__DisassociateDataUnitKeys(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__DisassociateDataUnitKeys(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeys * SOAP_FMAC4 soap_get_KMS_Agent__DisassociateDataUnitKeys(struct soap*, struct KMS_Agent__DisassociateDataUnitKeys *, const char*, const char*); - -#define soap_new_KMS_Agent__DisassociateDataUnitKeys(soap, n) soap_instantiate_KMS_Agent__DisassociateDataUnitKeys(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__DisassociateDataUnitKeys(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__DisassociateDataUnitKeys * SOAP_FMAC2 soap_instantiate_KMS_Agent__DisassociateDataUnitKeys(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__DisassociateDataUnitKeys(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse (58) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, struct KMS_Agent__DisassociateDataUnitKeysResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, const struct KMS_Agent__DisassociateDataUnitKeysResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, const char*, int, const struct KMS_Agent__DisassociateDataUnitKeysResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeysResponse * SOAP_FMAC4 soap_in_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, const char*, struct KMS_Agent__DisassociateDataUnitKeysResponse *, const char*); - -#define soap_write_KMS_Agent__DisassociateDataUnitKeysResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__DisassociateDataUnitKeysResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__DisassociateDataUnitKeysResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, const struct KMS_Agent__DisassociateDataUnitKeysResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__DisassociateDataUnitKeysResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__DisassociateDataUnitKeysResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__DisassociateDataUnitKeysResponse * SOAP_FMAC4 soap_get_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, struct KMS_Agent__DisassociateDataUnitKeysResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__DisassociateDataUnitKeysResponse(soap, n) soap_instantiate_KMS_Agent__DisassociateDataUnitKeysResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__DisassociateDataUnitKeysResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__DisassociateDataUnitKeysResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__DisassociateDataUnitKeysResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID (57) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueID * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueID * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, struct KMS_Agent__RetrieveDataUnitByExternalUniqueID *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitByExternalUniqueID(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitByExternalUniqueID * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse (54) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, const struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit (53) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnit(struct soap*, struct KMS_Agent__RetrieveDataUnit *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnit(struct soap*, const struct KMS_Agent__RetrieveDataUnit *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnit(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnit *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnit * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnit(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnit *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnit(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnit(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnit(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnit(struct soap*, const struct KMS_Agent__RetrieveDataUnit *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnit(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnit(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnit * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnit(struct soap*, struct KMS_Agent__RetrieveDataUnit *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnit(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnit(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnit(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnit * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnit(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnit(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse (50) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__RetrieveDataUnitResponse(struct soap*, struct KMS_Agent__RetrieveDataUnitResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__RetrieveDataUnitResponse(struct soap*, const struct KMS_Agent__RetrieveDataUnitResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__RetrieveDataUnitResponse(struct soap*, const char*, int, const struct KMS_Agent__RetrieveDataUnitResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitResponse * SOAP_FMAC4 soap_in_KMS_Agent__RetrieveDataUnitResponse(struct soap*, const char*, struct KMS_Agent__RetrieveDataUnitResponse *, const char*); - -#define soap_write_KMS_Agent__RetrieveDataUnitResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__RetrieveDataUnitResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__RetrieveDataUnitResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__RetrieveDataUnitResponse(struct soap*, const struct KMS_Agent__RetrieveDataUnitResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__RetrieveDataUnitResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__RetrieveDataUnitResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__RetrieveDataUnitResponse * SOAP_FMAC4 soap_get_KMS_Agent__RetrieveDataUnitResponse(struct soap*, struct KMS_Agent__RetrieveDataUnitResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__RetrieveDataUnitResponse(soap, n) soap_instantiate_KMS_Agent__RetrieveDataUnitResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__RetrieveDataUnitResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__RetrieveDataUnitResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__RetrieveDataUnitResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__RetrieveDataUnitResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit (49) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateDataUnit(struct soap*, struct KMS_Agent__CreateDataUnit *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateDataUnit(struct soap*, const struct KMS_Agent__CreateDataUnit *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateDataUnit(struct soap*, const char*, int, const struct KMS_Agent__CreateDataUnit *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateDataUnit * SOAP_FMAC4 soap_in_KMS_Agent__CreateDataUnit(struct soap*, const char*, struct KMS_Agent__CreateDataUnit *, const char*); - -#define soap_write_KMS_Agent__CreateDataUnit(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateDataUnit(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateDataUnit(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateDataUnit(struct soap*, const struct KMS_Agent__CreateDataUnit *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateDataUnit(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateDataUnit(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateDataUnit * SOAP_FMAC4 soap_get_KMS_Agent__CreateDataUnit(struct soap*, struct KMS_Agent__CreateDataUnit *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateDataUnit(soap, n) soap_instantiate_KMS_Agent__CreateDataUnit(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateDataUnit(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateDataUnit * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateDataUnit(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateDataUnit(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse (46) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__CreateDataUnitResponse(struct soap*, struct KMS_Agent__CreateDataUnitResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__CreateDataUnitResponse(struct soap*, const struct KMS_Agent__CreateDataUnitResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__CreateDataUnitResponse(struct soap*, const char*, int, const struct KMS_Agent__CreateDataUnitResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__CreateDataUnitResponse * SOAP_FMAC4 soap_in_KMS_Agent__CreateDataUnitResponse(struct soap*, const char*, struct KMS_Agent__CreateDataUnitResponse *, const char*); - -#define soap_write_KMS_Agent__CreateDataUnitResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__CreateDataUnitResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__CreateDataUnitResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__CreateDataUnitResponse(struct soap*, const struct KMS_Agent__CreateDataUnitResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__CreateDataUnitResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__CreateDataUnitResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__CreateDataUnitResponse * SOAP_FMAC4 soap_get_KMS_Agent__CreateDataUnitResponse(struct soap*, struct KMS_Agent__CreateDataUnitResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__CreateDataUnitResponse(soap, n) soap_instantiate_KMS_Agent__CreateDataUnitResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__CreateDataUnitResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__CreateDataUnitResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__CreateDataUnitResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__CreateDataUnitResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups (45) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ListKeyGroups(struct soap*, struct KMS_Agent__ListKeyGroups *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ListKeyGroups(struct soap*, const struct KMS_Agent__ListKeyGroups *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ListKeyGroups(struct soap*, const char*, int, const struct KMS_Agent__ListKeyGroups *, const char*); -SOAP_FMAC3 struct KMS_Agent__ListKeyGroups * SOAP_FMAC4 soap_in_KMS_Agent__ListKeyGroups(struct soap*, const char*, struct KMS_Agent__ListKeyGroups *, const char*); - -#define soap_write_KMS_Agent__ListKeyGroups(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__ListKeyGroups(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__ListKeyGroups(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ListKeyGroups(struct soap*, const struct KMS_Agent__ListKeyGroups *, const char*, const char*); - -#define soap_read_KMS_Agent__ListKeyGroups(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__ListKeyGroups(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__ListKeyGroups * SOAP_FMAC4 soap_get_KMS_Agent__ListKeyGroups(struct soap*, struct KMS_Agent__ListKeyGroups *, const char*, const char*); - -#define soap_new_KMS_Agent__ListKeyGroups(soap, n) soap_instantiate_KMS_Agent__ListKeyGroups(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__ListKeyGroups(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__ListKeyGroups * SOAP_FMAC2 soap_instantiate_KMS_Agent__ListKeyGroups(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ListKeyGroups(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse (42) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ListKeyGroupsResponse(struct soap*, struct KMS_Agent__ListKeyGroupsResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ListKeyGroupsResponse(struct soap*, const struct KMS_Agent__ListKeyGroupsResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ListKeyGroupsResponse(struct soap*, const char*, int, const struct KMS_Agent__ListKeyGroupsResponse *, const char*); -SOAP_FMAC3 struct KMS_Agent__ListKeyGroupsResponse * SOAP_FMAC4 soap_in_KMS_Agent__ListKeyGroupsResponse(struct soap*, const char*, struct KMS_Agent__ListKeyGroupsResponse *, const char*); - -#define soap_write_KMS_Agent__ListKeyGroupsResponse(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__ListKeyGroupsResponse(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__ListKeyGroupsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ListKeyGroupsResponse(struct soap*, const struct KMS_Agent__ListKeyGroupsResponse *, const char*, const char*); - -#define soap_read_KMS_Agent__ListKeyGroupsResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__ListKeyGroupsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__ListKeyGroupsResponse * SOAP_FMAC4 soap_get_KMS_Agent__ListKeyGroupsResponse(struct soap*, struct KMS_Agent__ListKeyGroupsResponse *, const char*, const char*); - -#define soap_new_KMS_Agent__ListKeyGroupsResponse(soap, n) soap_instantiate_KMS_Agent__ListKeyGroupsResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__ListKeyGroupsResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__ListKeyGroupsResponse * SOAP_FMAC2 soap_instantiate_KMS_Agent__ListKeyGroupsResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ListKeyGroupsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit (39) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__DataUnit(struct soap*, struct KMS_Agent__DataUnit *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__DataUnit(struct soap*, const struct KMS_Agent__DataUnit *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__DataUnit(struct soap*, const char*, int, const struct KMS_Agent__DataUnit *, const char*); -SOAP_FMAC3 struct KMS_Agent__DataUnit * SOAP_FMAC4 soap_in_KMS_Agent__DataUnit(struct soap*, const char*, struct KMS_Agent__DataUnit *, const char*); - -#define soap_write_KMS_Agent__DataUnit(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__DataUnit(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__DataUnit(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__DataUnit(struct soap*, const struct KMS_Agent__DataUnit *, const char*, const char*); - -#define soap_read_KMS_Agent__DataUnit(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__DataUnit(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__DataUnit * SOAP_FMAC4 soap_get_KMS_Agent__DataUnit(struct soap*, struct KMS_Agent__DataUnit *, const char*, const char*); - -#define soap_new_KMS_Agent__DataUnit(soap, n) soap_instantiate_KMS_Agent__DataUnit(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__DataUnit(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__DataUnit * SOAP_FMAC2 soap_instantiate_KMS_Agent__DataUnit(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__DataUnit(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys (37) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfKeys(struct soap*, struct KMS_Agent__ArrayOfKeys *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfKeys(struct soap*, struct KMS_Agent__ArrayOfKeys const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfKeys(struct soap*, const char*, int, const struct KMS_Agent__ArrayOfKeys *, const char*); -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeys * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfKeys(struct soap*, const char*, struct KMS_Agent__ArrayOfKeys *, const char*); - -#define soap_write_KMS_Agent__ArrayOfKeys(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__ArrayOfKeys(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__ArrayOfKeys(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfKeys(struct soap*, const struct KMS_Agent__ArrayOfKeys *, const char*, const char*); - -#define soap_read_KMS_Agent__ArrayOfKeys(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__ArrayOfKeys(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeys * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfKeys(struct soap*, struct KMS_Agent__ArrayOfKeys *, const char*, const char*); - -#define soap_new_KMS_Agent__ArrayOfKeys(soap, n) soap_instantiate_KMS_Agent__ArrayOfKeys(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__ArrayOfKeys(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__ArrayOfKeys * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfKeys(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfKeys(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__Key -#define SOAP_TYPE_KMS_Agent_KMS_Agent__Key (36) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__Key(struct soap*, struct KMS_Agent__Key *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__Key(struct soap*, const struct KMS_Agent__Key *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__Key(struct soap*, const char*, int, const struct KMS_Agent__Key *, const char*); -SOAP_FMAC3 struct KMS_Agent__Key * SOAP_FMAC4 soap_in_KMS_Agent__Key(struct soap*, const char*, struct KMS_Agent__Key *, const char*); - -#define soap_write_KMS_Agent__Key(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__Key(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__Key(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__Key(struct soap*, const struct KMS_Agent__Key *, const char*, const char*); - -#define soap_read_KMS_Agent__Key(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__Key(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__Key * SOAP_FMAC4 soap_get_KMS_Agent__Key(struct soap*, struct KMS_Agent__Key *, const char*, const char*); - -#define soap_new_KMS_Agent__Key(soap, n) soap_instantiate_KMS_Agent__Key(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__Key(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__Key * SOAP_FMAC2 soap_instantiate_KMS_Agent__Key(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__Key(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups (34) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfKeyGroups(struct soap*, struct KMS_Agent__ArrayOfKeyGroups *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfKeyGroups(struct soap*, struct KMS_Agent__ArrayOfKeyGroups const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfKeyGroups(struct soap*, const char*, int, const struct KMS_Agent__ArrayOfKeyGroups *, const char*); -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeyGroups * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfKeyGroups(struct soap*, const char*, struct KMS_Agent__ArrayOfKeyGroups *, const char*); - -#define soap_write_KMS_Agent__ArrayOfKeyGroups(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__ArrayOfKeyGroups(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__ArrayOfKeyGroups(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfKeyGroups(struct soap*, const struct KMS_Agent__ArrayOfKeyGroups *, const char*, const char*); - -#define soap_read_KMS_Agent__ArrayOfKeyGroups(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__ArrayOfKeyGroups(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__ArrayOfKeyGroups * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfKeyGroups(struct soap*, struct KMS_Agent__ArrayOfKeyGroups *, const char*, const char*); - -#define soap_new_KMS_Agent__ArrayOfKeyGroups(soap, n) soap_instantiate_KMS_Agent__ArrayOfKeyGroups(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__ArrayOfKeyGroups(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__ArrayOfKeyGroups * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfKeyGroups(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfKeyGroups(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup -#define SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup (33) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__KeyGroup(struct soap*, struct KMS_Agent__KeyGroup *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__KeyGroup(struct soap*, const struct KMS_Agent__KeyGroup *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__KeyGroup(struct soap*, const char*, int, const struct KMS_Agent__KeyGroup *, const char*); -SOAP_FMAC3 struct KMS_Agent__KeyGroup * SOAP_FMAC4 soap_in_KMS_Agent__KeyGroup(struct soap*, const char*, struct KMS_Agent__KeyGroup *, const char*); - -#define soap_write_KMS_Agent__KeyGroup(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__KeyGroup(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__KeyGroup(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__KeyGroup(struct soap*, const struct KMS_Agent__KeyGroup *, const char*, const char*); - -#define soap_read_KMS_Agent__KeyGroup(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__KeyGroup(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__KeyGroup * SOAP_FMAC4 soap_get_KMS_Agent__KeyGroup(struct soap*, struct KMS_Agent__KeyGroup *, const char*, const char*); - -#define soap_new_KMS_Agent__KeyGroup(soap, n) soap_instantiate_KMS_Agent__KeyGroup(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__KeyGroup(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__KeyGroup * SOAP_FMAC2 soap_instantiate_KMS_Agent__KeyGroup(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__KeyGroup(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters -#define SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters (29) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__QueryParameters(struct soap*, struct KMS_Agent__QueryParameters *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__QueryParameters(struct soap*, const struct KMS_Agent__QueryParameters *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__QueryParameters(struct soap*, const char*, int, const struct KMS_Agent__QueryParameters *, const char*); -SOAP_FMAC3 struct KMS_Agent__QueryParameters * SOAP_FMAC4 soap_in_KMS_Agent__QueryParameters(struct soap*, const char*, struct KMS_Agent__QueryParameters *, const char*); - -#define soap_write_KMS_Agent__QueryParameters(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__QueryParameters(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__QueryParameters(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__QueryParameters(struct soap*, const struct KMS_Agent__QueryParameters *, const char*, const char*); - -#define soap_read_KMS_Agent__QueryParameters(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__QueryParameters(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__QueryParameters * SOAP_FMAC4 soap_get_KMS_Agent__QueryParameters(struct soap*, struct KMS_Agent__QueryParameters *, const char*, const char*); - -#define soap_new_KMS_Agent__QueryParameters(soap, n) soap_instantiate_KMS_Agent__QueryParameters(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__QueryParameters(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__QueryParameters * SOAP_FMAC2 soap_instantiate_KMS_Agent__QueryParameters(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__QueryParameters(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters (27) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfFilterParameters(struct soap*, struct KMS_Agent__ArrayOfFilterParameters *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfFilterParameters(struct soap*, struct KMS_Agent__ArrayOfFilterParameters const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfFilterParameters(struct soap*, const char*, int, const struct KMS_Agent__ArrayOfFilterParameters *, const char*); -SOAP_FMAC3 struct KMS_Agent__ArrayOfFilterParameters * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfFilterParameters(struct soap*, const char*, struct KMS_Agent__ArrayOfFilterParameters *, const char*); - -#define soap_write_KMS_Agent__ArrayOfFilterParameters(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__ArrayOfFilterParameters(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__ArrayOfFilterParameters(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfFilterParameters(struct soap*, const struct KMS_Agent__ArrayOfFilterParameters *, const char*, const char*); - -#define soap_read_KMS_Agent__ArrayOfFilterParameters(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__ArrayOfFilterParameters(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__ArrayOfFilterParameters * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfFilterParameters(struct soap*, struct KMS_Agent__ArrayOfFilterParameters *, const char*, const char*); - -#define soap_new_KMS_Agent__ArrayOfFilterParameters(soap, n) soap_instantiate_KMS_Agent__ArrayOfFilterParameters(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__ArrayOfFilterParameters(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__ArrayOfFilterParameters * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfFilterParameters(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfFilterParameters(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters -#define SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters (26) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__FilterParameters(struct soap*, struct KMS_Agent__FilterParameters *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__FilterParameters(struct soap*, const struct KMS_Agent__FilterParameters *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__FilterParameters(struct soap*, const char*, int, const struct KMS_Agent__FilterParameters *, const char*); -SOAP_FMAC3 struct KMS_Agent__FilterParameters * SOAP_FMAC4 soap_in_KMS_Agent__FilterParameters(struct soap*, const char*, struct KMS_Agent__FilterParameters *, const char*); - -#define soap_write_KMS_Agent__FilterParameters(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__FilterParameters(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__FilterParameters(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__FilterParameters(struct soap*, const struct KMS_Agent__FilterParameters *, const char*, const char*); - -#define soap_read_KMS_Agent__FilterParameters(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__FilterParameters(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__FilterParameters * SOAP_FMAC4 soap_get_KMS_Agent__FilterParameters(struct soap*, struct KMS_Agent__FilterParameters *, const char*, const char*); - -#define soap_new_KMS_Agent__FilterParameters(soap, n) soap_instantiate_KMS_Agent__FilterParameters(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__FilterParameters(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__FilterParameters * SOAP_FMAC2 soap_instantiate_KMS_Agent__FilterParameters(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__FilterParameters(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary (22) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Agent__ArrayOfHexBinary(struct soap*, struct KMS_Agent__ArrayOfHexBinary *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Agent__ArrayOfHexBinary(struct soap*, struct KMS_Agent__ArrayOfHexBinary const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Agent__ArrayOfHexBinary(struct soap*, const char*, int, const struct KMS_Agent__ArrayOfHexBinary *, const char*); -SOAP_FMAC3 struct KMS_Agent__ArrayOfHexBinary * SOAP_FMAC4 soap_in_KMS_Agent__ArrayOfHexBinary(struct soap*, const char*, struct KMS_Agent__ArrayOfHexBinary *, const char*); - -#define soap_write_KMS_Agent__ArrayOfHexBinary(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_KMS_Agent__ArrayOfHexBinary(soap, data), 0) || KMS_Agent::soap_put_KMS_Agent__ArrayOfHexBinary(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Agent__ArrayOfHexBinary(struct soap*, const struct KMS_Agent__ArrayOfHexBinary *, const char*, const char*); - -#define soap_read_KMS_Agent__ArrayOfHexBinary(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_KMS_Agent__ArrayOfHexBinary(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__ArrayOfHexBinary * SOAP_FMAC4 soap_get_KMS_Agent__ArrayOfHexBinary(struct soap*, struct KMS_Agent__ArrayOfHexBinary *, const char*, const char*); - -#define soap_new_KMS_Agent__ArrayOfHexBinary(soap, n) soap_instantiate_KMS_Agent__ArrayOfHexBinary(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Agent__ArrayOfHexBinary(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Agent__ArrayOfHexBinary * SOAP_FMAC2 soap_instantiate_KMS_Agent__ArrayOfHexBinary(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Agent__ArrayOfHexBinary(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__hexBinary -#define SOAP_TYPE_KMS_Agent_xsd__hexBinary (18) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap*, struct xsd__hexBinary *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap*, struct xsd__hexBinary const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap*, const char*, int, const struct xsd__hexBinary *, const char*); -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap*, const char*, struct xsd__hexBinary *, const char*); - -#define soap_write_xsd__hexBinary(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_xsd__hexBinary(soap, data), 0) || KMS_Agent::soap_put_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap*, const struct xsd__hexBinary *, const char*, const char*); - -#define soap_read_xsd__hexBinary(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap*, struct xsd__hexBinary *, const char*, const char*); - -#define soap_new_xsd__hexBinary(soap, n) soap_instantiate_xsd__hexBinary(soap, n, NULL, NULL, NULL) - - -#define soap_delete_xsd__hexBinary(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Reason -#define SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Reason (115) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); - -#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || KMS_Agent::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Detail -#define SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Detail (114) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); - -#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || KMS_Agent::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Code -#define SOAP_TYPE_KMS_Agent_PointerToSOAP_ENV__Code (110) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); - -#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || KMS_Agent::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); - -#endif - -#ifndef SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__Key -#define SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__Key (38) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Agent__Key(struct soap*, struct KMS_Agent__Key *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Agent__Key(struct soap*, const char *, int, struct KMS_Agent__Key *const*, const char *); -SOAP_FMAC3 struct KMS_Agent__Key ** SOAP_FMAC4 soap_in_PointerToKMS_Agent__Key(struct soap*, const char*, struct KMS_Agent__Key **, const char*); - -#define soap_write_PointerToKMS_Agent__Key(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToKMS_Agent__Key(soap, data), 0) || KMS_Agent::soap_put_PointerToKMS_Agent__Key(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Agent__Key(struct soap*, struct KMS_Agent__Key *const*, const char*, const char*); - -#define soap_read_PointerToKMS_Agent__Key(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToKMS_Agent__Key(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__Key ** SOAP_FMAC4 soap_get_PointerToKMS_Agent__Key(struct soap*, struct KMS_Agent__Key **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__KeyGroup -#define SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__KeyGroup (35) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Agent__KeyGroup(struct soap*, struct KMS_Agent__KeyGroup *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Agent__KeyGroup(struct soap*, const char *, int, struct KMS_Agent__KeyGroup *const*, const char *); -SOAP_FMAC3 struct KMS_Agent__KeyGroup ** SOAP_FMAC4 soap_in_PointerToKMS_Agent__KeyGroup(struct soap*, const char*, struct KMS_Agent__KeyGroup **, const char*); - -#define soap_write_PointerToKMS_Agent__KeyGroup(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToKMS_Agent__KeyGroup(soap, data), 0) || KMS_Agent::soap_put_PointerToKMS_Agent__KeyGroup(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Agent__KeyGroup(struct soap*, struct KMS_Agent__KeyGroup *const*, const char*, const char*); - -#define soap_read_PointerToKMS_Agent__KeyGroup(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToKMS_Agent__KeyGroup(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__KeyGroup ** SOAP_FMAC4 soap_get_PointerToKMS_Agent__KeyGroup(struct soap*, struct KMS_Agent__KeyGroup **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__FilterParameters -#define SOAP_TYPE_KMS_Agent_PointerToKMS_Agent__FilterParameters (28) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Agent__FilterParameters(struct soap*, struct KMS_Agent__FilterParameters *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Agent__FilterParameters(struct soap*, const char *, int, struct KMS_Agent__FilterParameters *const*, const char *); -SOAP_FMAC3 struct KMS_Agent__FilterParameters ** SOAP_FMAC4 soap_in_PointerToKMS_Agent__FilterParameters(struct soap*, const char*, struct KMS_Agent__FilterParameters **, const char*); - -#define soap_write_PointerToKMS_Agent__FilterParameters(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToKMS_Agent__FilterParameters(soap, data), 0) || KMS_Agent::soap_put_PointerToKMS_Agent__FilterParameters(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Agent__FilterParameters(struct soap*, struct KMS_Agent__FilterParameters *const*, const char*, const char*); - -#define soap_read_PointerToKMS_Agent__FilterParameters(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToKMS_Agent__FilterParameters(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Agent__FilterParameters ** SOAP_FMAC4 soap_get_PointerToKMS_Agent__FilterParameters(struct soap*, struct KMS_Agent__FilterParameters **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_PointerToxsd__hexBinary -#define SOAP_TYPE_KMS_Agent_PointerToxsd__hexBinary (23) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToxsd__hexBinary(struct soap*, struct xsd__hexBinary *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToxsd__hexBinary(struct soap*, const char *, int, struct xsd__hexBinary *const*, const char *); -SOAP_FMAC3 struct xsd__hexBinary ** SOAP_FMAC4 soap_in_PointerToxsd__hexBinary(struct soap*, const char*, struct xsd__hexBinary **, const char*); - -#define soap_write_PointerToxsd__hexBinary(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerToxsd__hexBinary(soap, data), 0) || KMS_Agent::soap_put_PointerToxsd__hexBinary(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToxsd__hexBinary(struct soap*, struct xsd__hexBinary *const*, const char*, const char*); - -#define soap_read_PointerToxsd__hexBinary(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerToxsd__hexBinary(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct xsd__hexBinary ** SOAP_FMAC4 soap_get_PointerToxsd__hexBinary(struct soap*, struct xsd__hexBinary **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_PointerTounsignedByte -#define SOAP_TYPE_KMS_Agent_PointerTounsignedByte (21) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap*, unsigned char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap*, const char *, int, unsigned char *const*, const char *); -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap*, const char*, unsigned char **, const char*); - -#define soap_write_PointerTounsignedByte(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_PointerTounsignedByte(soap, data), 0) || KMS_Agent::soap_put_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap*, unsigned char *const*, const char*, const char*); - -#define soap_read_PointerTounsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap*, unsigned char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__duration -#define SOAP_TYPE_KMS_Agent_xsd__duration (17) -#endif - -#define soap_default_xsd__duration(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__duration(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__duration(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_xsd__duration(soap, data), 0) || KMS_Agent::soap_put_xsd__duration(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__duration(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__dateTime -#define SOAP_TYPE_KMS_Agent_xsd__dateTime (16) -#endif - -#define soap_default_xsd__dateTime(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__dateTime(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__dateTime(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_xsd__dateTime(soap, data), 0) || KMS_Agent::soap_put_xsd__dateTime(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__dateTime(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__dateTime(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_xsd__string -#define SOAP_TYPE_KMS_Agent_xsd__string (7) -#endif - -#define soap_default_xsd__string(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__string(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__string(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_xsd__string(soap, data), 0) || KMS_Agent::soap_put_xsd__string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__string(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_xsd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent__QName -#define SOAP_TYPE_KMS_Agent__QName (5) -#endif - -#define soap_default__QName(soap, a) soap_default_string(soap, a) - - -#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); - -#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize__QName(soap, data), 0) || KMS_Agent::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); - -#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Agent_string -#define SOAP_TYPE_KMS_Agent_string (4) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); - -#define soap_write_string(soap, data) ( soap_begin_send(soap) || (KMS_Agent::soap_serialize_string(soap, data), 0) || KMS_Agent::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !KMS_Agent::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); - -} // namespace KMS_Agent - - -#endif - -/* End of KMS_AgentH.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_AgentStub.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_AgentStub.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,834 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_AgentStub.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/AgentService/KMS_Agent_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_AgentStub_H -#define KMS_AgentStub_H -#ifndef WITH_NONAMESPACES -#define WITH_NONAMESPACES -#endif -#ifndef WITH_NOGLOBAL -#define WITH_NOGLOBAL -#endif -#include "stdsoap2.h" - -namespace KMS_Agent { - -/******************************************************************************\ - * * - * Enumerations * - * * -\******************************************************************************/ - - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder -#define SOAP_TYPE_KMS_Agent_KMS_Agent__SortOrder (24) -/* KMS-Agent:SortOrder */ -enum KMS_Agent__SortOrder {SORT_ORDER_ASCENDING = 0, SORT_ORDER_DESCENDING = 1}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator -#define SOAP_TYPE_KMS_Agent_KMS_Agent__FilterOperator (25) -/* KMS-Agent:FilterOperator */ -enum KMS_Agent__FilterOperator {FILTER_OPERATOR_EQUAL = 0, FILTER_OPERATOR_NOT_EQUAL = 1, FILTER_OPERATOR_GREATER_THAN = 2, FILTER_OPERATOR_LESS_THAN = 3, FILTER_OPERATOR_GREATER_THAN_OR_EQUAL = 4, FILTER_OPERATOR_LESS_THAN_OR_EQUAL = 5, FILTER_OPERATOR_STARTS_WITH = 6}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType -#define SOAP_TYPE_KMS_Agent_KMS_Agent__KeyType (30) -/* KMS-Agent:KeyType */ -enum KMS_Agent__KeyType {KEY_TYPE_AES_256 = 0}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState -#define SOAP_TYPE_KMS_Agent_KMS_Agent__KeyState (31) -/* KMS-Agent:KeyState */ -enum KMS_Agent__KeyState {KEY_STATE_GENERATED = 0, KEY_STATE_READY = 1, KEY_STATE_PROTECT_AND_PROCESS = 2, KEY_STATE_PROCESS_ONLY = 3, KEY_STATE_DEACTIVATED = 4, KEY_STATE_COMPROMISED = 5, KEY_STATE_DESTROYED_INCOMPLETE = 6, KEY_STATE_DESTROYED_COMPLETE = 7, KEY_STATE_DESTROYED_COMPROMISED_INCOMPLETE = 8, KEY_STATE_DESTROYED_COMPROMISED_COMPLETE = 9}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnitState (32) -/* KMS-Agent:DataUnitState */ -enum KMS_Agent__DataUnitState {DATA_UNIT_STATE_NO_KEY = 0, DATA_UNIT_STATE_READABLE_NORMAL = 1, DATA_UNIT_STATE_READABLE_NEEDS_REKEY = 2, DATA_UNIT_STATE_SHREDDED = 3}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention -#define SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogRetention (40) -/* KMS-Agent:AuditLogRetention */ -enum KMS_Agent__AuditLogRetention {AUDIT_LOG_LONG_TERM_RETENTION = 0, AUDIT_LOG_MEDIUM_TERM_RETENTION = 1, AUDIT_LOG_SHORT_TERM_RETENTION = 2, AUDIT_LOG_ZERO_RETENTION = 3}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition -#define SOAP_TYPE_KMS_Agent_KMS_Agent__AuditLogCondition (41) -/* KMS-Agent:AuditLogCondition */ -enum KMS_Agent__AuditLogCondition {AUDIT_LOG_SUCCESS_CONDITION = 0, AUDIT_LOG_ERROR_CONDITION = 1, AUDIT_LOG_WARNING_CONDITION = 2}; -#endif - -/******************************************************************************\ - * * - * Types with Custom Serializers * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Classes and Structs * - * * -\******************************************************************************/ - - -#if 0 /* volatile type: do not declare here, declared elsewhere */ - -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__hexBinary -#define SOAP_TYPE_KMS_Agent_xsd__hexBinary (18) -/* hexBinary schema type: */ -struct xsd__hexBinary -{ -public: - unsigned char *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfHexBinary (22) -/* Sequence of KMS-Agent:ArrayOfHexBinary schema type: */ -struct KMS_Agent__ArrayOfHexBinary -{ -public: - struct xsd__hexBinary *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters -#define SOAP_TYPE_KMS_Agent_KMS_Agent__FilterParameters (26) -/* KMS-Agent:FilterParameters */ -struct KMS_Agent__FilterParameters -{ -public: - char *FieldName; /* optional element of type xsd:string */ - enum KMS_Agent__FilterOperator FilterOperator; /* required element of type KMS-Agent:FilterOperator */ - char *FieldValue; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfFilterParameters (27) -/* Sequence of KMS-Agent:ArrayOfFilterParameters schema type: */ -struct KMS_Agent__ArrayOfFilterParameters -{ -public: - struct KMS_Agent__FilterParameters *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters -#define SOAP_TYPE_KMS_Agent_KMS_Agent__QueryParameters (29) -/* KMS-Agent:QueryParameters */ -struct KMS_Agent__QueryParameters -{ -public: - long NextPageSize; /* required element of type xsd:int */ - char *SortFieldName; /* optional element of type xsd:string */ - enum KMS_Agent__SortOrder SortOrder; /* required element of type KMS-Agent:SortOrder */ - struct KMS_Agent__ArrayOfFilterParameters FilterParameters; /* optional element of type KMS-Agent:ArrayOfFilterParameters */ - char *PreviousPageLastIDValue; /* optional element of type xsd:string */ - char *PreviousPageLastSortFieldValue; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup -#define SOAP_TYPE_KMS_Agent_KMS_Agent__KeyGroup (33) -/* KMS-Agent:KeyGroup */ -struct KMS_Agent__KeyGroup -{ -public: - char *KeyGroupID; /* optional element of type xsd:string */ - char *Description; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeyGroups (34) -/* Sequence of KMS-Agent:ArrayOfKeyGroups schema type: */ -struct KMS_Agent__ArrayOfKeyGroups -{ -public: - struct KMS_Agent__KeyGroup *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__Key -#define SOAP_TYPE_KMS_Agent_KMS_Agent__Key (36) -/* KMS-Agent:Key */ -struct KMS_Agent__Key -{ -public: - char *KeyID; /* optional element of type xsd:string */ - enum KMS_Agent__KeyState KeyState; /* required element of type KMS-Agent:KeyState */ - enum KMS_Agent__KeyType KeyType; /* required element of type KMS-Agent:KeyType */ - char *KeyGroupID; /* optional element of type xsd:string */ - struct xsd__hexBinary Key; /* required element of type xsd:hexBinary */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ArrayOfKeys (37) -/* Sequence of KMS-Agent:ArrayOfKeys schema type: */ -struct KMS_Agent__ArrayOfKeys -{ -public: - struct KMS_Agent__Key *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DataUnit (39) -/* KMS-Agent:DataUnit */ -struct KMS_Agent__DataUnit -{ -public: - char *DataUnitID; /* optional element of type xsd:string */ - char *ExternalUniqueID; /* optional element of type xsd:string */ - char *ExternalTag; /* optional element of type xsd:string */ - char *Description; /* optional element of type xsd:string */ - enum KMS_Agent__DataUnitState DataUnitState; /* required element of type KMS-Agent:DataUnitState */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroupsResponse (42) -/* KMS-Agent:ListKeyGroupsResponse */ -struct KMS_Agent__ListKeyGroupsResponse -{ -public: - struct KMS_Agent__ArrayOfKeyGroups KeyGroups; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type KMS-Agent:ArrayOfKeyGroups */ - bool LastPage; /* required element of type xsd:boolean */ - struct KMS_Agent__QueryParameters NextPageQueryParameters; /* required element of type KMS-Agent:QueryParameters */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups -#define SOAP_TYPE_KMS_Agent_KMS_Agent__ListKeyGroups (45) -/* KMS-Agent:ListKeyGroups */ -struct KMS_Agent__ListKeyGroups -{ -public: - struct KMS_Agent__QueryParameters QueryParameters; /* required element of type KMS-Agent:QueryParameters */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnitResponse (46) -/* KMS-Agent:CreateDataUnitResponse */ -struct KMS_Agent__CreateDataUnitResponse -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:DataUnit */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateDataUnit (49) -/* KMS-Agent:CreateDataUnit */ -struct KMS_Agent__CreateDataUnit -{ -public: - char *ExternalUniqueID; /* optional element of type xsd:string */ - char *ExternalTag; /* optional element of type xsd:string */ - char *Description; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitResponse (50) -/* KMS-Agent:RetrieveDataUnitResponse */ -struct KMS_Agent__RetrieveDataUnitResponse -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:DataUnit */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnit (53) -/* KMS-Agent:RetrieveDataUnit */ -struct KMS_Agent__RetrieveDataUnit -{ -public: - char *DataUnitID; /* optional element of type xsd:string */ - char *ExternalUniqueID; /* optional element of type xsd:string */ - char *ExternalTag; /* optional element of type xsd:string */ - char *Description; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse (54) -/* KMS-Agent:RetrieveDataUnitByExternalUniqueIDResponse */ -struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:DataUnit */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitByExternalUniqueID (57) -/* KMS-Agent:RetrieveDataUnitByExternalUniqueID */ -struct KMS_Agent__RetrieveDataUnitByExternalUniqueID -{ -public: - char *ExternalUniqueID; /* optional element of type xsd:string */ - char *ExternalTag; /* optional element of type xsd:string */ - char *Description; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeysResponse (58) -/* KMS-Agent:DisassociateDataUnitKeysResponse */ -struct KMS_Agent__DisassociateDataUnitKeysResponse -{ -public: - void *_; /* transient */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys -#define SOAP_TYPE_KMS_Agent_KMS_Agent__DisassociateDataUnitKeys (63) -/* KMS-Agent:DisassociateDataUnitKeys */ -struct KMS_Agent__DisassociateDataUnitKeys -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKeyResponse (64) -/* KMS-Agent:CreateKeyResponse */ -struct KMS_Agent__CreateKeyResponse -{ -public: - struct KMS_Agent__Key Key; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:Key */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey (67) -/* KMS-Agent:CreateKey */ -struct KMS_Agent__CreateKey -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - char *KeyGroupID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2Response (68) -/* KMS-Agent:CreateKey2Response */ -struct KMS_Agent__CreateKey2Response -{ -public: - struct KMS_Agent__Key Key; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:Key */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateKey2 (71) -/* KMS-Agent:CreateKey2 */ -struct KMS_Agent__CreateKey2 -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - char *KeyGroupID; /* optional element of type xsd:string */ - char *AgentKWKID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKeyResponse (72) -/* KMS-Agent:RetrieveKeyResponse */ -struct KMS_Agent__RetrieveKeyResponse -{ -public: - struct KMS_Agent__Key Key; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:Key */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey (75) -/* KMS-Agent:RetrieveKey */ -struct KMS_Agent__RetrieveKey -{ -public: - char *KeyID; /* optional element of type xsd:string */ - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - char *KeyGroupID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2Response (76) -/* KMS-Agent:RetrieveKey2Response */ -struct KMS_Agent__RetrieveKey2Response -{ -public: - struct KMS_Agent__Key Key; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:Key */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveKey2 (79) -/* KMS-Agent:RetrieveKey2 */ -struct KMS_Agent__RetrieveKey2 -{ -public: - char *KeyID; /* optional element of type xsd:string */ - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - char *KeyGroupID; /* optional element of type xsd:string */ - char *AgentKWKID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeysResponse (80) -/* KMS-Agent:RetrieveDataUnitKeysResponse */ -struct KMS_Agent__RetrieveDataUnitKeysResponse -{ -public: - LONG64 KeysRemaining; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:long */ - struct KMS_Agent__ArrayOfKeys Keys; /* optional element of type KMS-Agent:ArrayOfKeys */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys (83) -/* KMS-Agent:RetrieveDataUnitKeys */ -struct KMS_Agent__RetrieveDataUnitKeys -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - long PageSize; /* required element of type xsd:int */ - long PageOffset; /* required element of type xsd:int */ - char *KeyID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2Response (84) -/* KMS-Agent:RetrieveDataUnitKeys2Response */ -struct KMS_Agent__RetrieveDataUnitKeys2Response -{ -public: - LONG64 KeysRemaining; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:long */ - struct KMS_Agent__ArrayOfKeys Keys; /* optional element of type KMS-Agent:ArrayOfKeys */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveDataUnitKeys2 (87) -/* KMS-Agent:RetrieveDataUnitKeys2 */ -struct KMS_Agent__RetrieveDataUnitKeys2 -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - long PageSize; /* required element of type xsd:int */ - long PageOffset; /* required element of type xsd:int */ - char *KeyID; /* optional element of type xsd:string */ - char *AgentKWKID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKeyResponse (88) -/* KMS-Agent:RetrieveProtectAndProcessKeyResponse */ -struct KMS_Agent__RetrieveProtectAndProcessKeyResponse -{ -public: - struct KMS_Agent__Key Key; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:Key */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey (91) -/* KMS-Agent:RetrieveProtectAndProcessKey */ -struct KMS_Agent__RetrieveProtectAndProcessKey -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - char *KeyGroupID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2Response (92) -/* KMS-Agent:RetrieveProtectAndProcessKey2Response */ -struct KMS_Agent__RetrieveProtectAndProcessKey2Response -{ -public: - struct KMS_Agent__Key Key; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type KMS-Agent:Key */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2 -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RetrieveProtectAndProcessKey2 (95) -/* KMS-Agent:RetrieveProtectAndProcessKey2 */ -struct KMS_Agent__RetrieveProtectAndProcessKey2 -{ -public: - struct KMS_Agent__DataUnit DataUnit; /* required element of type KMS-Agent:DataUnit */ - char *KeyGroupID; /* optional element of type xsd:string */ - char *AgentKWKID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLogResponse (96) -/* KMS-Agent:CreateAuditLogResponse */ -struct KMS_Agent__CreateAuditLogResponse -{ -public: - void *_; /* transient */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog -#define SOAP_TYPE_KMS_Agent_KMS_Agent__CreateAuditLog (99) -/* KMS-Agent:CreateAuditLog */ -struct KMS_Agent__CreateAuditLog -{ -public: - enum KMS_Agent__AuditLogRetention Retention; /* required element of type KMS-Agent:AuditLogRetention */ - enum KMS_Agent__AuditLogCondition Condition; /* required element of type KMS-Agent:AuditLogCondition */ - bool IssueAlert; /* required element of type xsd:boolean */ - char *Message; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKeyResponse (100) -/* KMS-Agent:GetAgentKWKPublicKeyResponse */ -struct KMS_Agent__GetAgentKWKPublicKeyResponse -{ -public: - struct xsd__hexBinary KWKPublicKey; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:hexBinary */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey -#define SOAP_TYPE_KMS_Agent_KMS_Agent__GetAgentKWKPublicKey (103) -/* KMS-Agent:GetAgentKWKPublicKey */ -struct KMS_Agent__GetAgentKWKPublicKey -{ -#ifdef WITH_NOEMPTYSTRUCT -private: - char dummy; /* dummy member to enable compilation */ -#endif -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWKResponse (104) -/* KMS-Agent:RegisterAgentKWKResponse */ -struct KMS_Agent__RegisterAgentKWKResponse -{ -public: - char *AgentKWKID; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK -#define SOAP_TYPE_KMS_Agent_KMS_Agent__RegisterAgentKWK (107) -/* KMS-Agent:RegisterAgentKWK */ -struct KMS_Agent__RegisterAgentKWK -{ -public: - struct xsd__hexBinary AgentKWK; /* required element of type xsd:hexBinary */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Header -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Header (108) -/* SOAP Header: */ -struct SOAP_ENV__Header -{ -#ifdef WITH_NOEMPTYSTRUCT -private: - char dummy; /* dummy member to enable compilation */ -#endif -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Code -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Code (109) -/* SOAP Fault Code: */ -struct SOAP_ENV__Code -{ -public: - char *SOAP_ENV__Value; /* optional element of type xsd:QName */ - struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Detail (111) -/* SOAP-ENV:Detail */ -struct SOAP_ENV__Detail -{ -public: - int __type; /* any type of element (defined below) */ - void *fault; /* transient */ - char *__any; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Reason (112) -/* SOAP-ENV:Reason */ -struct SOAP_ENV__Reason -{ -public: - char *SOAP_ENV__Text; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_Agent_SOAP_ENV__Fault (113) -/* SOAP Fault: */ -struct SOAP_ENV__Fault -{ -public: - char *faultcode; /* optional element of type xsd:QName */ - char *faultstring; /* optional element of type xsd:string */ - char *faultactor; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ - struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ - struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ - char *SOAP_ENV__Node; /* optional element of type xsd:string */ - char *SOAP_ENV__Role; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ -}; -#endif - -/******************************************************************************\ - * * - * Typedefs * - * * -\******************************************************************************/ - -#ifndef SOAP_TYPE_KMS_Agent__QName -#define SOAP_TYPE_KMS_Agent__QName (5) -typedef char *_QName; -#endif - -#ifndef SOAP_TYPE_KMS_Agent__XML -#define SOAP_TYPE_KMS_Agent__XML (6) -typedef char *_XML; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__string -#define SOAP_TYPE_KMS_Agent_xsd__string (7) -typedef char *xsd__string; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__float -#define SOAP_TYPE_KMS_Agent_xsd__float (9) -typedef float xsd__float; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__int -#define SOAP_TYPE_KMS_Agent_xsd__int (11) -typedef long xsd__int; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__boolean -#define SOAP_TYPE_KMS_Agent_xsd__boolean (13) -typedef bool xsd__boolean; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__long -#define SOAP_TYPE_KMS_Agent_xsd__long (15) -typedef LONG64 xsd__long; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__dateTime -#define SOAP_TYPE_KMS_Agent_xsd__dateTime (16) -typedef char *xsd__dateTime; -#endif - -#ifndef SOAP_TYPE_KMS_Agent_xsd__duration -#define SOAP_TYPE_KMS_Agent_xsd__duration (17) -typedef char *xsd__duration; -#endif - - -/******************************************************************************\ - * * - * Externals * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Server-Side Operations * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__ListKeyGroups(struct soap*, struct KMS_Agent__QueryParameters QueryParameters, struct KMS_Agent__ListKeyGroupsResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__CreateDataUnit(struct soap*, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__CreateDataUnitResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveDataUnit(struct soap*, char *DataUnitID, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__RetrieveDataUnitResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__DisassociateDataUnitKeys(struct soap*, struct KMS_Agent__DataUnit DataUnit, struct KMS_Agent__DisassociateDataUnitKeysResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__CreateKey(struct soap*, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__CreateKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__CreateKey2(struct soap*, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__CreateKey2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveKey(struct soap*, char *KeyID, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__RetrieveKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveKey2(struct soap*, char *KeyID, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__RetrieveKey2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveDataUnitKeys(struct soap*, struct KMS_Agent__DataUnit DataUnit, long PageSize, long PageOffset, char *KeyID, struct KMS_Agent__RetrieveDataUnitKeysResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveDataUnitKeys2(struct soap*, struct KMS_Agent__DataUnit DataUnit, long PageSize, long PageOffset, char *KeyID, char *AgentKWKID, struct KMS_Agent__RetrieveDataUnitKeys2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveProtectAndProcessKey(struct soap*, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__RetrieveProtectAndProcessKey2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__CreateAuditLog(struct soap*, enum KMS_Agent__AuditLogRetention Retention, enum KMS_Agent__AuditLogCondition Condition, bool IssueAlert, char *Message, struct KMS_Agent__CreateAuditLogResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__GetAgentKWKPublicKey(struct soap*, struct KMS_Agent__GetAgentKWKPublicKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent__RegisterAgentKWK(struct soap*, struct xsd__hexBinary AgentKWK, struct KMS_Agent__RegisterAgentKWKResponse &result); - -/******************************************************************************\ - * * - * Server-Side Skeletons to Invoke Service Operations * - * * -\******************************************************************************/ - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent_serve(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Agent_serve_request(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__ListKeyGroups(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__CreateDataUnit(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveDataUnit(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__DisassociateDataUnitKeys(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__CreateKey(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__CreateKey2(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveKey(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveKey2(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveDataUnitKeys(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveDataUnitKeys2(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveProtectAndProcessKey(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__CreateAuditLog(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__GetAgentKWKPublicKey(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Agent__RegisterAgentKWK(struct soap*); - -/******************************************************************************\ - * * - * Client-Side Call Stubs * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__ListKeyGroups(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__QueryParameters QueryParameters, struct KMS_Agent__ListKeyGroupsResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateDataUnit(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__CreateDataUnitResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnit(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *DataUnitID, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__RetrieveDataUnitResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnitByExternalUniqueID(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *ExternalUniqueID, char *ExternalTag, char *Description, struct KMS_Agent__RetrieveDataUnitByExternalUniqueIDResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__DisassociateDataUnitKeys(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, struct KMS_Agent__DisassociateDataUnitKeysResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__CreateKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateKey2(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__CreateKey2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *KeyID, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__RetrieveKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveKey2(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *KeyID, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__RetrieveKey2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnitKeys(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, long PageSize, long PageOffset, char *KeyID, struct KMS_Agent__RetrieveDataUnitKeysResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveDataUnitKeys2(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, long PageSize, long PageOffset, char *KeyID, char *AgentKWKID, struct KMS_Agent__RetrieveDataUnitKeys2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveProtectAndProcessKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, struct KMS_Agent__RetrieveProtectAndProcessKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RetrieveProtectAndProcessKey2(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__DataUnit DataUnit, char *KeyGroupID, char *AgentKWKID, struct KMS_Agent__RetrieveProtectAndProcessKey2Response &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__CreateAuditLog(struct soap *soap, const char *soap_endpoint, const char *soap_action, enum KMS_Agent__AuditLogRetention Retention, enum KMS_Agent__AuditLogCondition Condition, bool IssueAlert, char *Message, struct KMS_Agent__CreateAuditLogResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__GetAgentKWKPublicKey(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct KMS_Agent__GetAgentKWKPublicKeyResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Agent__RegisterAgentKWK(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct xsd__hexBinary AgentKWK, struct KMS_Agent__RegisterAgentKWKResponse &result); - -} // namespace KMS_Agent - - -#endif - -/* End of KMS_AgentStub.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CA.nsmap --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CA.nsmap Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include "KMS_CAH.h" -SOAP_NMAC struct Namespace KMS_CA_namespaces[] = -{ - {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope"}, - {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding"}, - {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"}, - {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"}, - {"KMS-CA", "http://www.sun.com/KMS/KMS-CA"}, - {NULL, NULL} -}; diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CAC.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CAC.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2648 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CAC.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/CAService/KMS_CA_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif - -#include "KMS_CAH.h" - -namespace KMS_CA { - -SOAP_SOURCE_STAMP("@(#) KMS_CAC.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) -{ - if (soap->header) - soap_serialize_SOAP_ENV__Header(soap, soap->header); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) -{ - if (soap->header) - { soap->part = SOAP_IN_HEADER; - if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) - return soap->error; - soap->part = SOAP_END_HEADER; - } - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) -{ - soap->part = SOAP_IN_HEADER; - soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); - soap->part = SOAP_END_HEADER; - return soap->header == NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) -{ - if (!soap->header) - { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) - soap_default_SOAP_ENV__Header(soap, soap->header); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) -{ - if (!soap->fault) - { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); - if (!soap->fault) - return; - soap_default_SOAP_ENV__Fault(soap, soap->fault); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) - { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) - { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); - soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) -{ - soap_fault(soap); - if (soap->fault) - soap_serialize_SOAP_ENV__Fault(soap, soap->fault); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) -{ - if (soap->fault) - return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) -{ - return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) - { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); - } - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; - } - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; - return (const char**)&soap->fault->faultstring; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 1) - { if (!soap->fault->detail) - { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); - soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); - } - return (const char**)&soap->fault->detail->__any; - } - if (!soap->fault->SOAP_ENV__Detail) - { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); - soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); - } - return (const char**)&soap->fault->SOAP_ENV__Detail->__any; -} - -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) -{ - int t; - if (soap->version == 1) - { for (;;) - { if (!soap_getelement(soap, &t)) - if (soap->error || soap_ignore_element(soap)) - break; - } - } - if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) - soap->error = SOAP_OK; - return soap->error; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) -{ - if (soap_peek_element(soap)) - return NULL; - if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) - *type = soap_lookup_type(soap, soap->href); - switch (*type) - { - case SOAP_TYPE_KMS_CA_byte: - return soap_in_byte(soap, NULL, NULL, "xsd:byte"); - case SOAP_TYPE_KMS_CA_int: - return soap_in_int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_CA_xsd__int: - return soap_in_xsd__int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_CA_long: - return soap_in_long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_CA_xsd__long: - return soap_in_xsd__long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_CA_LONG64: - return soap_in_LONG64(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_CA_xsd__float: - return soap_in_xsd__float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_CA_float: - return soap_in_float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_CA_unsignedByte: - return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_CA_unsignedInt: - return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_CA_xsd__boolean: - return soap_in_xsd__boolean(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_CA_bool: - return soap_in_bool(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock: - return soap_in_KMS_CA__RetrieveLocalClock(soap, NULL, NULL, "KMS-CA:RetrieveLocalClock"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse: - return soap_in_KMS_CA__RetrieveLocalClockResponse(soap, NULL, NULL, "KMS-CA:RetrieveLocalClockResponse"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate: - return soap_in_KMS_CA__RetrieveRootCACertificate(soap, NULL, NULL, "KMS-CA:RetrieveRootCACertificate"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse: - return soap_in_KMS_CA__RetrieveRootCACertificateResponse(soap, NULL, NULL, "KMS-CA:RetrieveRootCACertificateResponse"); - case SOAP_TYPE_KMS_CA_xsd__hexBinary: - return soap_in_xsd__hexBinary(soap, NULL, NULL, "xsd:hexBinary"); - case SOAP_TYPE_KMS_CA_PointerTounsignedByte: - return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_CA_xsd__duration: - { char **s; - s = soap_in_xsd__duration(soap, NULL, NULL, "xsd:duration"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_CA_xsd__dateTime: - { char **s; - s = soap_in_xsd__dateTime(soap, NULL, NULL, "xsd:dateTime"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_CA_xsd__string: - { char **s; - s = soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_CA__QName: - { char **s; - s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_CA_string: - { char **s; - s = soap_in_string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - default: - { const char *t = soap->type; - if (!*t) - t = soap->tag; - if (!soap_match_tag(soap, t, "xsd:byte")) - { *type = SOAP_TYPE_KMS_CA_byte; - return soap_in_byte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_CA_int; - return soap_in_int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_CA_xsd__int; - return soap_in_xsd__int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_CA_long; - return soap_in_long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_CA_xsd__long; - return soap_in_xsd__long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_CA_LONG64; - return soap_in_LONG64(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_CA_xsd__float; - return soap_in_xsd__float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_CA_float; - return soap_in_float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedByte")) - { *type = SOAP_TYPE_KMS_CA_unsignedByte; - return soap_in_unsignedByte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedInt")) - { *type = SOAP_TYPE_KMS_CA_unsignedInt; - return soap_in_unsignedInt(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_CA_xsd__boolean; - return soap_in_xsd__boolean(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_CA_bool; - return soap_in_bool(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-CA:RetrieveLocalClock")) - { *type = SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock; - return soap_in_KMS_CA__RetrieveLocalClock(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-CA:RetrieveLocalClockResponse")) - { *type = SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse; - return soap_in_KMS_CA__RetrieveLocalClockResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-CA:RetrieveRootCACertificate")) - { *type = SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate; - return soap_in_KMS_CA__RetrieveRootCACertificate(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-CA:RetrieveRootCACertificateResponse")) - { *type = SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse; - return soap_in_KMS_CA__RetrieveRootCACertificateResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:hexBinary")) - { *type = SOAP_TYPE_KMS_CA_xsd__hexBinary; - return soap_in_xsd__hexBinary(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:duration")) - { char **s; - *type = SOAP_TYPE_KMS_CA_xsd__duration; - s = soap_in_xsd__duration(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:dateTime")) - { char **s; - *type = SOAP_TYPE_KMS_CA_xsd__dateTime; - s = soap_in_xsd__dateTime(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_CA_xsd__string; - s = soap_in_xsd__string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:QName")) - { char **s; - *type = SOAP_TYPE_KMS_CA__QName; - s = soap_in__QName(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_CA_string; - s = soap_in_string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - t = soap->tag; - } - } - soap->error = SOAP_TAG_MISMATCH; - return NULL; -} -#endif - -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) -{ - if (!soap_peek_element(soap)) - { int t; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); - if (soap->mustUnderstand && !soap->other) - return soap->error = SOAP_MUSTUNDERSTAND; - if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); - return soap->error = SOAP_TAG_MISMATCH; - } - if (!*soap->id || !soap_getelement(soap, &t)) - { soap->peeked = 0; - if (soap->fignore) - soap->error = soap->fignore(soap, soap->tag); - else - soap->error = SOAP_OK; - DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); - if (!soap->error && soap->body) - { soap->level++; - while (!soap_ignore_element(soap)) - ; - if (soap->error == SOAP_NO_TAG) - soap->error = soap_element_end_in(soap, NULL); - } - } - } - return soap->error; -} - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) -{ - int i; - struct soap_plist *pp; - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) - for (i = 0; i < SOAP_PTRHASH; i++) - for (pp = soap->pht[i]; pp; pp = pp->next) - if (pp->mark1 == 2 || pp->mark2 == 2) - if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) - return soap->error; - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) -{ - switch (type) - { - case SOAP_TYPE_KMS_CA_byte: - return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); - case SOAP_TYPE_KMS_CA_int: - return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_CA_xsd__int: - return soap_out_xsd__int(soap, tag, id, (const long *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_CA_long: - return soap_out_long(soap, tag, id, (const long *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_CA_xsd__long: - return soap_out_xsd__long(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_CA_LONG64: - return soap_out_LONG64(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_CA_xsd__float: - return soap_out_xsd__float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_CA_float: - return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_CA_unsignedByte: - return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_CA_unsignedInt: - return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_CA_xsd__boolean: - return soap_out_xsd__boolean(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_CA_bool: - return soap_out_bool(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock: - return soap_out_KMS_CA__RetrieveLocalClock(soap, tag, id, (const struct KMS_CA__RetrieveLocalClock *)ptr, "KMS-CA:RetrieveLocalClock"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse: - return soap_out_KMS_CA__RetrieveLocalClockResponse(soap, tag, id, (const struct KMS_CA__RetrieveLocalClockResponse *)ptr, "KMS-CA:RetrieveLocalClockResponse"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate: - return soap_out_KMS_CA__RetrieveRootCACertificate(soap, tag, id, (const struct KMS_CA__RetrieveRootCACertificate *)ptr, "KMS-CA:RetrieveRootCACertificate"); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse: - return soap_out_KMS_CA__RetrieveRootCACertificateResponse(soap, tag, id, (const struct KMS_CA__RetrieveRootCACertificateResponse *)ptr, "KMS-CA:RetrieveRootCACertificateResponse"); - case SOAP_TYPE_KMS_CA_xsd__hexBinary: - return soap_out_xsd__hexBinary(soap, tag, id, (const struct xsd__hexBinary *)ptr, "xsd:hexBinary"); - case SOAP_TYPE_KMS_CA_PointerTounsignedByte: - return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_CA_xsd__duration: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:duration"); - case SOAP_TYPE_KMS_CA_xsd__dateTime: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:dateTime"); - case SOAP_TYPE_KMS_CA_xsd__string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - case SOAP_TYPE_KMS_CA__QName: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); - case SOAP_TYPE_KMS_CA_string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - } - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) -{ - (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ - switch (type) - { - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock: - soap_serialize_KMS_CA__RetrieveLocalClock(soap, (const struct KMS_CA__RetrieveLocalClock *)ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse: - soap_serialize_KMS_CA__RetrieveLocalClockResponse(soap, (const struct KMS_CA__RetrieveLocalClockResponse *)ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate: - soap_serialize_KMS_CA__RetrieveRootCACertificate(soap, (const struct KMS_CA__RetrieveRootCACertificate *)ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse: - soap_serialize_KMS_CA__RetrieveRootCACertificateResponse(soap, (const struct KMS_CA__RetrieveRootCACertificateResponse *)ptr); - break; - case SOAP_TYPE_KMS_CA_xsd__hexBinary: - soap_serialize_xsd__hexBinary(soap, (const struct xsd__hexBinary *)ptr); - break; - case SOAP_TYPE_KMS_CA_PointerTounsignedByte: - soap_serialize_PointerTounsignedByte(soap, (unsigned char *const*)ptr); - break; - case SOAP_TYPE_KMS_CA_xsd__duration: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_CA_xsd__dateTime: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_CA_xsd__string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_CA__QName: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_CA_string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - } -} -#endif - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) -{ - switch (t) - { - case SOAP_TYPE_KMS_CA_xsd__hexBinary: - return (void*)soap_instantiate_xsd__hexBinary(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse: - return (void*)soap_instantiate_KMS_CA__RetrieveRootCACertificateResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate: - return (void*)soap_instantiate_KMS_CA__RetrieveRootCACertificate(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse: - return (void*)soap_instantiate_KMS_CA__RetrieveLocalClockResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock: - return (void*)soap_instantiate_KMS_CA__RetrieveLocalClock(soap, -1, type, arrayType, n); -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_CA_SOAP_ENV__Header: - return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_CA_SOAP_ENV__Code: - return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_CA_SOAP_ENV__Detail: - return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_CA_SOAP_ENV__Reason: - return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_CA_SOAP_ENV__Fault: - return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); -#endif - } - return NULL; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) -{ switch (p->type) - { - case SOAP_TYPE_KMS_CA_xsd__hexBinary: - if (p->size < 0) - SOAP_DELETE((struct xsd__hexBinary*)p->ptr); - else - SOAP_DELETE_ARRAY((struct xsd__hexBinary*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_CA__RetrieveRootCACertificateResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_CA__RetrieveRootCACertificateResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate: - if (p->size < 0) - SOAP_DELETE((struct KMS_CA__RetrieveRootCACertificate*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_CA__RetrieveRootCACertificate*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_CA__RetrieveLocalClockResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_CA__RetrieveLocalClockResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock: - if (p->size < 0) - SOAP_DELETE((struct KMS_CA__RetrieveLocalClock*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_CA__RetrieveLocalClock*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_SOAP_ENV__Header: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_SOAP_ENV__Code: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_SOAP_ENV__Detail: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_SOAP_ENV__Reason: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); - break; - case SOAP_TYPE_KMS_CA_SOAP_ENV__Fault: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); - break; - default: return SOAP_ERR; - } - return SOAP_OK; -} - -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) -{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_byte - *a = SOAP_DEFAULT_byte; -#else - *a = (char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) -{ - return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_byte); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) -{ char *p; - p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_KMS_CA_byte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_byte); - if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) -{ - if ((p = soap_in_byte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_int - *a = SOAP_DEFAULT_int; -#else - *a = (int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) -{ - return soap_outint(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_int); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) -{ int *p; - p = soap_inint(soap, tag, a, type, SOAP_TYPE_KMS_CA_int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_int); - if (soap_out_int(soap, tag?tag:"int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) -{ - if ((p = soap_in_int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_xsd__int); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_CA_xsd__int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__int); - if (soap_out_xsd__int(soap, tag?tag:"xsd:int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap *soap, long *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_long - *a = SOAP_DEFAULT_long; -#else - *a = (long)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_long); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_CA_long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_long); - if (soap_out_long(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_xsd__long); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_CA_xsd__long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__long); - if (soap_out_xsd__long(soap, tag?tag:"xsd:long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap *soap, LONG64 *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_LONG64 - *a = SOAP_DEFAULT_LONG64; -#else - *a = (LONG64)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_LONG64); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_CA_LONG64); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_LONG64); - if (soap_out_LONG64(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_LONG64(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_xsd__float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_CA_xsd__float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__float); - if (soap_out_xsd__float(soap, tag?tag:"xsd:float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap *soap, float *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_float - *a = SOAP_DEFAULT_float; -#else - *a = (float)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_CA_float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_float); - if (soap_out_float(soap, tag?tag:"float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap *soap, unsigned char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedByte - *a = SOAP_DEFAULT_unsignedByte; -#else - *a = (unsigned char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) -{ - return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_unsignedByte); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) -{ unsigned char *p; - p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_KMS_CA_unsignedByte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_unsignedByte); - if (soap_out_unsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap *soap, unsigned int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedInt - *a = SOAP_DEFAULT_unsignedInt; -#else - *a = (unsigned int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *a, const char *type) -{ - return soap_outunsignedInt(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_unsignedInt); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap *soap, const char *tag, unsigned int *a, const char *type) -{ unsigned int *p; - p = soap_inunsignedInt(soap, tag, a, type, SOAP_TYPE_KMS_CA_unsignedInt); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap *soap, const unsigned int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_unsignedInt); - if (soap_out_unsignedInt(soap, tag?tag:"unsignedInt", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap *soap, unsigned int *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedInt(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap *soap, bool n) -{ return soap_bool2s(soap, n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_xsd__boolean), type) || soap_send(soap, soap_xsd__boolean2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap *soap, const char *s, bool *a) -{ - return soap_s2bool(soap, s, a); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_xsd__boolean, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2xsd__boolean(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_xsd__boolean, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__boolean); - if (soap_out_xsd__boolean(soap, tag?tag:"xsd:boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__boolean(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap *soap, bool *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_bool - *a = SOAP_DEFAULT_bool; -#else - *a = (bool)0; -#endif -} - -static const struct soap_code_map soap_codes_bool[] = -{ { (long)false, "false" }, - { (long)true, "true" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap *soap, bool n) -{ - (void)soap; /* appease -Wall -Werror */ -return soap_code_str(soap_codes_bool, n!=0); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_bool), type) || soap_send(soap, soap_bool2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap *soap, const char *s, bool *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_bool, s); - if (map) - *a = (bool)(map->code != 0); - else - { long n; - if (soap_s2long(soap, s, &n) || n < 0 || n > 1) - return soap->error = SOAP_TYPE; - *a = (bool)(n != 0); - } - return SOAP_OK; -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_bool, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2bool(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_bool, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_bool); - if (soap_out_bool(soap, tag?tag:"boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_bool(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->faultcode); - soap_default_string(soap, &a->faultstring); - soap_default_string(soap, &a->faultactor); - a->detail = NULL; - a->SOAP_ENV__Code = NULL; - a->SOAP_ENV__Reason = NULL; - soap_default_string(soap, &a->SOAP_ENV__Node); - soap_default_string(soap, &a->SOAP_ENV__Role); - a->SOAP_ENV__Detail = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->faultcode); - soap_serialize_string(soap, &a->faultstring); - soap_serialize_string(soap, &a->faultactor); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); - soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); - soap_serialize_string(soap, &a->SOAP_ENV__Node); - soap_serialize_string(soap, &a->SOAP_ENV__Role); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) -{ - const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Fault), type)) - return soap->error; - if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) - return soap->error; - if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "xsd:string")) - return soap->error; - if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "xsd:string")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) -{ - size_t soap_flag_faultcode = 1; - size_t soap_flag_faultstring = 1; - size_t soap_flag_faultactor = 1; - size_t soap_flag_detail = 1; - size_t soap_flag_SOAP_ENV__Code = 1; - size_t soap_flag_SOAP_ENV__Reason = 1; - size_t soap_flag_SOAP_ENV__Node = 1; - size_t soap_flag_SOAP_ENV__Role = 1; - size_t soap_flag_SOAP_ENV__Detail = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Fault(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) - { soap_flag_faultcode--; - continue; - } - if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) - { soap_flag_faultstring--; - continue; - } - if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) - { soap_flag_faultactor--; - continue; - } - if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) - { soap_flag_detail--; - continue; - } - if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) - { soap_flag_SOAP_ENV__Code--; - continue; - } - if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) - { soap_flag_SOAP_ENV__Reason--; - continue; - } - if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) - { soap_flag_SOAP_ENV__Node--; - continue; - } - if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) - { soap_flag_SOAP_ENV__Role--; - continue; - } - if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) - { soap_flag_SOAP_ENV__Detail--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_SOAP_ENV__Fault); - if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_SOAP_ENV__Fault, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); - if (size) - *size = sizeof(struct SOAP_ENV__Fault); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Fault); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Fault*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); - *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason), type)) - return soap->error; - if (soap->lang) - soap_set_attr(soap, "xml:lang", soap->lang, 1); - if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Text = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Reason(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) - { soap_flag_SOAP_ENV__Text--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason); - if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); - if (size) - *size = sizeof(struct SOAP_ENV__Reason); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Reason); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Reason*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); - *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - a->__type = 0; - a->fault = NULL; - a->__any = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_markelement(soap, a->fault, a->__type); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail), type)) - return soap->error; - if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) - return soap->error; - soap_outliteral(soap, "-any", &a->__any, NULL); - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) -{ - size_t soap_flag_fault = 1; - size_t soap_flag___any = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Detail(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) - if ((a->fault = soap_getelement(soap, &a->__type))) - { soap_flag_fault = 0; - continue; - } - if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_inliteral(soap, "-any", &a->__any)) - { soap_flag___any--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail); - if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); - if (size) - *size = sizeof(struct SOAP_ENV__Detail); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Detail); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Detail*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); - *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->SOAP_ENV__Value); - a->SOAP_ENV__Subcode = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->SOAP_ENV__Value); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) -{ - const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Code), type)) - return soap->error; - if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Value = 1; - size_t soap_flag_SOAP_ENV__Subcode = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Code(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) - { soap_flag_SOAP_ENV__Value--; - continue; - } - if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) - { soap_flag_SOAP_ENV__Subcode--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_SOAP_ENV__Code); - if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_SOAP_ENV__Code, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); - if (size) - *size = sizeof(struct SOAP_ENV__Code); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Code); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Code*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); - *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Header), type)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Header(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_SOAP_ENV__Header); - if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_SOAP_ENV__Header, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); - if (size) - *size = sizeof(struct SOAP_ENV__Header); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Header); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Header*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); - *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveLocalClock(struct soap *soap, struct KMS_CA__RetrieveLocalClock *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->EntityID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveLocalClock(struct soap *soap, const struct KMS_CA__RetrieveLocalClock *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->EntityID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveLocalClock(struct soap *soap, const char *tag, int id, const struct KMS_CA__RetrieveLocalClock *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock), type)) - return soap->error; - if (soap_out_xsd__string(soap, "EntityID", -1, &a->EntityID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClock * SOAP_FMAC4 soap_in_KMS_CA__RetrieveLocalClock(struct soap *soap, const char *tag, struct KMS_CA__RetrieveLocalClock *a, const char *type) -{ - size_t soap_flag_EntityID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_CA__RetrieveLocalClock *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock, sizeof(struct KMS_CA__RetrieveLocalClock), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_CA__RetrieveLocalClock(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_EntityID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "EntityID", &a->EntityID, "xsd:string")) - { soap_flag_EntityID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_CA__RetrieveLocalClock *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock, 0, sizeof(struct KMS_CA__RetrieveLocalClock), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveLocalClock(struct soap *soap, const struct KMS_CA__RetrieveLocalClock *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock); - if (soap_out_KMS_CA__RetrieveLocalClock(soap, tag?tag:"KMS-CA:RetrieveLocalClock", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClock * SOAP_FMAC4 soap_get_KMS_CA__RetrieveLocalClock(struct soap *soap, struct KMS_CA__RetrieveLocalClock *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_CA__RetrieveLocalClock(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_CA__RetrieveLocalClock * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveLocalClock(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_CA__RetrieveLocalClock(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveLocalClock); - if (size) - *size = sizeof(struct KMS_CA__RetrieveLocalClock); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveLocalClock[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_CA__RetrieveLocalClock); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_CA__RetrieveLocalClock*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveLocalClock(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_CA__RetrieveLocalClock %p -> %p\n", q, p)); - *(struct KMS_CA__RetrieveLocalClock*)p = *(struct KMS_CA__RetrieveLocalClock*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, struct KMS_CA__RetrieveLocalClockResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__dateTime(soap, &a->CurrentTime); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, const struct KMS_CA__RetrieveLocalClockResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__dateTime(soap, &a->CurrentTime); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, const char *tag, int id, const struct KMS_CA__RetrieveLocalClockResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse), type)) - return soap->error; - if (soap_out_xsd__dateTime(soap, "CurrentTime", -1, &a->CurrentTime, "xsd:dateTime")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClockResponse * SOAP_FMAC4 soap_in_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, const char *tag, struct KMS_CA__RetrieveLocalClockResponse *a, const char *type) -{ - size_t soap_flag_CurrentTime = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_CA__RetrieveLocalClockResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse, sizeof(struct KMS_CA__RetrieveLocalClockResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_CA__RetrieveLocalClockResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_CurrentTime && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__dateTime(soap, "CurrentTime", &a->CurrentTime, "xsd:dateTime")) - { soap_flag_CurrentTime--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_CA__RetrieveLocalClockResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse, 0, sizeof(struct KMS_CA__RetrieveLocalClockResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, const struct KMS_CA__RetrieveLocalClockResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse); - if (soap_out_KMS_CA__RetrieveLocalClockResponse(soap, tag?tag:"KMS-CA:RetrieveLocalClockResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClockResponse * SOAP_FMAC4 soap_get_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, struct KMS_CA__RetrieveLocalClockResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_CA__RetrieveLocalClockResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_CA__RetrieveLocalClockResponse * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_CA__RetrieveLocalClockResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveLocalClockResponse); - if (size) - *size = sizeof(struct KMS_CA__RetrieveLocalClockResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveLocalClockResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_CA__RetrieveLocalClockResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_CA__RetrieveLocalClockResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveLocalClockResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_CA__RetrieveLocalClockResponse %p -> %p\n", q, p)); - *(struct KMS_CA__RetrieveLocalClockResponse*)p = *(struct KMS_CA__RetrieveLocalClockResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveRootCACertificate(struct soap *soap, struct KMS_CA__RetrieveRootCACertificate *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->EntityID); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveRootCACertificate(struct soap *soap, const struct KMS_CA__RetrieveRootCACertificate *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->EntityID); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveRootCACertificate(struct soap *soap, const char *tag, int id, const struct KMS_CA__RetrieveRootCACertificate *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate), type)) - return soap->error; - if (soap_out_xsd__string(soap, "EntityID", -1, &a->EntityID, "xsd:string")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificate * SOAP_FMAC4 soap_in_KMS_CA__RetrieveRootCACertificate(struct soap *soap, const char *tag, struct KMS_CA__RetrieveRootCACertificate *a, const char *type) -{ - size_t soap_flag_EntityID = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_CA__RetrieveRootCACertificate *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate, sizeof(struct KMS_CA__RetrieveRootCACertificate), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_CA__RetrieveRootCACertificate(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_EntityID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "EntityID", &a->EntityID, "xsd:string")) - { soap_flag_EntityID--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_CA__RetrieveRootCACertificate *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate, 0, sizeof(struct KMS_CA__RetrieveRootCACertificate), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveRootCACertificate(struct soap *soap, const struct KMS_CA__RetrieveRootCACertificate *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate); - if (soap_out_KMS_CA__RetrieveRootCACertificate(soap, tag?tag:"KMS-CA:RetrieveRootCACertificate", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificate * SOAP_FMAC4 soap_get_KMS_CA__RetrieveRootCACertificate(struct soap *soap, struct KMS_CA__RetrieveRootCACertificate *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_CA__RetrieveRootCACertificate(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_CA__RetrieveRootCACertificate * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveRootCACertificate(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_CA__RetrieveRootCACertificate(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveRootCACertificate); - if (size) - *size = sizeof(struct KMS_CA__RetrieveRootCACertificate); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveRootCACertificate[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_CA__RetrieveRootCACertificate); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_CA__RetrieveRootCACertificate*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveRootCACertificate(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_CA__RetrieveRootCACertificate %p -> %p\n", q, p)); - *(struct KMS_CA__RetrieveRootCACertificate*)p = *(struct KMS_CA__RetrieveRootCACertificate*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, struct KMS_CA__RetrieveRootCACertificateResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__hexBinary(soap, &a->RootCACertificate); - soap_default_xsd__int(soap, &a->AuthenticationHashIterationCount); - soap_default_xsd__hexBinary(soap, &a->ClientAuthenticationChallenge); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, const struct KMS_CA__RetrieveRootCACertificateResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__hexBinary(soap, &a->RootCACertificate); - soap_serialize_xsd__hexBinary(soap, &a->ClientAuthenticationChallenge); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, const char *tag, int id, const struct KMS_CA__RetrieveRootCACertificateResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse), type)) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "RootCACertificate", -1, &a->RootCACertificate, "xsd:hexBinary")) - return soap->error; - if (soap_out_xsd__int(soap, "AuthenticationHashIterationCount", -1, &a->AuthenticationHashIterationCount, "xsd:int")) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "ClientAuthenticationChallenge", -1, &a->ClientAuthenticationChallenge, "xsd:hexBinary")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificateResponse * SOAP_FMAC4 soap_in_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, const char *tag, struct KMS_CA__RetrieveRootCACertificateResponse *a, const char *type) -{ - size_t soap_flag_RootCACertificate = 1; - size_t soap_flag_AuthenticationHashIterationCount = 1; - size_t soap_flag_ClientAuthenticationChallenge = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_CA__RetrieveRootCACertificateResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse, sizeof(struct KMS_CA__RetrieveRootCACertificateResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_CA__RetrieveRootCACertificateResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_RootCACertificate && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "RootCACertificate", &a->RootCACertificate, "xsd:hexBinary")) - { soap_flag_RootCACertificate--; - continue; - } - if (soap_flag_AuthenticationHashIterationCount && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "AuthenticationHashIterationCount", &a->AuthenticationHashIterationCount, "xsd:int")) - { soap_flag_AuthenticationHashIterationCount--; - continue; - } - if (soap_flag_ClientAuthenticationChallenge && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "ClientAuthenticationChallenge", &a->ClientAuthenticationChallenge, "xsd:hexBinary")) - { soap_flag_ClientAuthenticationChallenge--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_CA__RetrieveRootCACertificateResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse, 0, sizeof(struct KMS_CA__RetrieveRootCACertificateResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_RootCACertificate > 0 || soap_flag_AuthenticationHashIterationCount > 0 || soap_flag_ClientAuthenticationChallenge > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, const struct KMS_CA__RetrieveRootCACertificateResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse); - if (soap_out_KMS_CA__RetrieveRootCACertificateResponse(soap, tag?tag:"KMS-CA:RetrieveRootCACertificateResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificateResponse * SOAP_FMAC4 soap_get_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, struct KMS_CA__RetrieveRootCACertificateResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_CA__RetrieveRootCACertificateResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_CA__RetrieveRootCACertificateResponse * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_CA__RetrieveRootCACertificateResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveRootCACertificateResponse); - if (size) - *size = sizeof(struct KMS_CA__RetrieveRootCACertificateResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_CA__RetrieveRootCACertificateResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_CA__RetrieveRootCACertificateResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_CA__RetrieveRootCACertificateResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveRootCACertificateResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_CA__RetrieveRootCACertificateResponse %p -> %p\n", q, p)); - *(struct KMS_CA__RetrieveRootCACertificateResponse*)p = *(struct KMS_CA__RetrieveRootCACertificateResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary const*a) -{ - if (a->__ptr) - soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_CA_xsd__hexBinary); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap *soap, const char *tag, int id, const struct xsd__hexBinary *a, const char *type) -{ - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_CA_xsd__hexBinary); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - if (soap_puthex(soap, a->__ptr, a->__size)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap *soap, const char *tag, struct xsd__hexBinary *a, const char *type) -{ - (void)type; /* appease -Wall -Werror */ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":hexBinary")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct xsd__hexBinary *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_CA_xsd__hexBinary, sizeof(struct xsd__hexBinary), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_xsd__hexBinary(soap, a); - if (soap->body && !*soap->href) - { - a->__ptr = soap_gethex(soap, &a->__size); - if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct xsd__hexBinary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_CA_xsd__hexBinary, 0, sizeof(struct xsd__hexBinary), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap *soap, const struct xsd__hexBinary *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_CA_xsd__hexBinary); - if (soap_out_xsd__hexBinary(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__hexBinary(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__hexBinary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_CA_xsd__hexBinary, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary); - if (size) - *size = sizeof(struct xsd__hexBinary); - } - else - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct xsd__hexBinary); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct xsd__hexBinary*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct xsd__hexBinary %p -> %p\n", q, p)); - *(struct xsd__hexBinary*)p = *(struct xsd__hexBinary*)q; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason)) - soap_serialize_SOAP_ENV__Reason(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_CA_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Reason); - if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail)) - soap_serialize_SOAP_ENV__Detail(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_CA_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Detail); - if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_CA_SOAP_ENV__Code)) - soap_serialize_SOAP_ENV__Code(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_CA_SOAP_ENV__Code); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_CA_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Code); - if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap *soap, unsigned char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_CA_unsignedByte); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap *soap, const char *tag, int id, unsigned char *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_CA_unsignedByte); - if (id < 0) - return soap->error; - return soap_out_unsignedByte(soap, tag, id, *a, type); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap *soap, const char *tag, unsigned char **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (unsigned char **)soap_malloc(soap, sizeof(unsigned char *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_unsignedByte(soap, tag, *a, type))) - return NULL; - } - else - { a = (unsigned char **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_CA_unsignedByte, sizeof(unsigned char), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap *soap, unsigned char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_PointerTounsignedByte); - if (soap_out_PointerTounsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap *soap, unsigned char **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerTounsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_xsd__duration); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_CA_xsd__duration, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__duration); - if (soap_out_xsd__duration(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__duration(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_xsd__dateTime); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_CA_xsd__dateTime, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__dateTime); - if (soap_out_xsd__dateTime(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__dateTime(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_xsd__string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_CA_xsd__string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_xsd__string); - if (soap_out_xsd__string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_CA__QName); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_CA__QName, 2, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA__QName); - if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in__QName(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_string - *a = SOAP_DEFAULT_string; -#else - *a = (char *)0; -#endif -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_CA_string); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_CA_string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_CA_string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_CA_string); - if (soap_out_string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -} // namespace KMS_CA - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_CAC.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CAClient.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CAClient.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CAClient.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/CAService/KMS_CA_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif -#include "KMS_CAH.h" - -namespace KMS_CA { - -SOAP_SOURCE_STAMP("@(#) KMS_CAClient.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_CA__RetrieveRootCACertificate(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *EntityID, struct KMS_CA__RetrieveRootCACertificateResponse &result) -{ struct KMS_CA__RetrieveRootCACertificate soap_tmp_KMS_CA__RetrieveRootCACertificate; - soap_tmp_KMS_CA__RetrieveRootCACertificate.EntityID = EntityID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_CA__RetrieveRootCACertificate(soap, &soap_tmp_KMS_CA__RetrieveRootCACertificate); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_CA__RetrieveRootCACertificate(soap, &soap_tmp_KMS_CA__RetrieveRootCACertificate, "KMS-CA:RetrieveRootCACertificate", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_CA__RetrieveRootCACertificate(soap, &soap_tmp_KMS_CA__RetrieveRootCACertificate, "KMS-CA:RetrieveRootCACertificate", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_CA__RetrieveRootCACertificateResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_CA__RetrieveRootCACertificateResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_CA__RetrieveLocalClock(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *EntityID, struct KMS_CA__RetrieveLocalClockResponse &result) -{ struct KMS_CA__RetrieveLocalClock soap_tmp_KMS_CA__RetrieveLocalClock; - soap_tmp_KMS_CA__RetrieveLocalClock.EntityID = EntityID; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_CA__RetrieveLocalClock(soap, &soap_tmp_KMS_CA__RetrieveLocalClock); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_CA__RetrieveLocalClock(soap, &soap_tmp_KMS_CA__RetrieveLocalClock, "KMS-CA:RetrieveLocalClock", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_CA__RetrieveLocalClock(soap, &soap_tmp_KMS_CA__RetrieveLocalClock, "KMS-CA:RetrieveLocalClock", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_CA__RetrieveLocalClockResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_CA__RetrieveLocalClockResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -} // namespace KMS_CA - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_CAClient.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CAH.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CAH.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,702 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CAH.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/CAService/KMS_CA_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_CAH_H -#define KMS_CAH_H -#include "KMS_CAStub.h" - -namespace KMS_CA { -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); -SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_byte -#define SOAP_TYPE_KMS_CA_byte (3) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); - -#define soap_write_byte(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); - -#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_int -#define SOAP_TYPE_KMS_CA_int (1) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); - -#define soap_write_int(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); - -#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__int -#define SOAP_TYPE_KMS_CA_xsd__int (11) -#endif - -#define soap_default_xsd__int(soap, a) soap_default_long(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap*, const char*, long *, const char*); - -#define soap_write_xsd__int(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_xsd__int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap*, const long *, const char*, const char*); - -#define soap_read_xsd__int(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_long -#define SOAP_TYPE_KMS_CA_long (10) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap*, long *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap*, const char*, long *, const char*); - -#define soap_write_long(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap*, const long *, const char*, const char*); - -#define soap_read_long(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__long -#define SOAP_TYPE_KMS_CA_xsd__long (15) -#endif - -#define soap_default_xsd__long(soap, a) soap_default_LONG64(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_xsd__long(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_xsd__long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_xsd__long(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_LONG64 -#define SOAP_TYPE_KMS_CA_LONG64 (14) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap*, LONG64 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_LONG64(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_LONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_LONG64(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_LONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__float -#define SOAP_TYPE_KMS_CA_xsd__float (9) -#endif - -#define soap_default_xsd__float(soap, a) soap_default_float(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap*, const char*, float *, const char*); - -#define soap_write_xsd__float(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_xsd__float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap*, const float *, const char*, const char*); - -#define soap_read_xsd__float(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_float -#define SOAP_TYPE_KMS_CA_float (8) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap*, float *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap*, const char*, float *, const char*); - -#define soap_write_float(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap*, const float *, const char*, const char*); - -#define soap_read_float(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_unsignedByte -#define SOAP_TYPE_KMS_CA_unsignedByte (20) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap*, unsigned char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap*, const char*, unsigned char *, const char*); - -#define soap_write_unsignedByte(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap*, const unsigned char *, const char*, const char*); - -#define soap_read_unsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap*, unsigned char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_unsignedInt -#define SOAP_TYPE_KMS_CA_unsignedInt (19) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap*, unsigned int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap*, const char*, int, const unsigned int *, const char*); -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap*, const char*, unsigned int *, const char*); - -#define soap_write_unsignedInt(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_unsignedInt(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap*, const unsigned int *, const char*, const char*); - -#define soap_read_unsignedInt(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap*, unsigned int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__boolean -#define SOAP_TYPE_KMS_CA_xsd__boolean (13) -#endif - -#define soap_default_xsd__boolean(soap, a) soap_default_bool(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap*, const char*, bool *); - -#define soap_write_xsd__boolean(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_xsd__boolean(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap*, const bool *, const char*, const char*); - -#define soap_read_xsd__boolean(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__boolean(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap*, bool *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_bool -#define SOAP_TYPE_KMS_CA_bool (12) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap*, bool *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap*, const char*, bool *); - -#define soap_write_bool(soap, data) ( soap_begin_send(soap) || KMS_CA::soap_put_bool(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap*, const bool *, const char*, const char*); - -#define soap_read_bool(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_bool(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap*, bool *, const char*, const char*); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Fault (37) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); - -#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || KMS_CA::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Reason (36) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); - -#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || KMS_CA::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Detail (33) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); - -#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || KMS_CA::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Code -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Code (31) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); - -#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_SOAP_ENV__Code(soap, data), 0) || KMS_CA::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Header -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Header (30) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); - -#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_SOAP_ENV__Header(soap, data), 0) || KMS_CA::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock (29) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveLocalClock(struct soap*, struct KMS_CA__RetrieveLocalClock *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveLocalClock(struct soap*, const struct KMS_CA__RetrieveLocalClock *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveLocalClock(struct soap*, const char*, int, const struct KMS_CA__RetrieveLocalClock *, const char*); -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClock * SOAP_FMAC4 soap_in_KMS_CA__RetrieveLocalClock(struct soap*, const char*, struct KMS_CA__RetrieveLocalClock *, const char*); - -#define soap_write_KMS_CA__RetrieveLocalClock(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_KMS_CA__RetrieveLocalClock(soap, data), 0) || KMS_CA::soap_put_KMS_CA__RetrieveLocalClock(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveLocalClock(struct soap*, const struct KMS_CA__RetrieveLocalClock *, const char*, const char*); - -#define soap_read_KMS_CA__RetrieveLocalClock(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_KMS_CA__RetrieveLocalClock(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClock * SOAP_FMAC4 soap_get_KMS_CA__RetrieveLocalClock(struct soap*, struct KMS_CA__RetrieveLocalClock *, const char*, const char*); - -#define soap_new_KMS_CA__RetrieveLocalClock(soap, n) soap_instantiate_KMS_CA__RetrieveLocalClock(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_CA__RetrieveLocalClock(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_CA__RetrieveLocalClock * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveLocalClock(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveLocalClock(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse (26) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveLocalClockResponse(struct soap*, struct KMS_CA__RetrieveLocalClockResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveLocalClockResponse(struct soap*, const struct KMS_CA__RetrieveLocalClockResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveLocalClockResponse(struct soap*, const char*, int, const struct KMS_CA__RetrieveLocalClockResponse *, const char*); -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClockResponse * SOAP_FMAC4 soap_in_KMS_CA__RetrieveLocalClockResponse(struct soap*, const char*, struct KMS_CA__RetrieveLocalClockResponse *, const char*); - -#define soap_write_KMS_CA__RetrieveLocalClockResponse(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_KMS_CA__RetrieveLocalClockResponse(soap, data), 0) || KMS_CA::soap_put_KMS_CA__RetrieveLocalClockResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveLocalClockResponse(struct soap*, const struct KMS_CA__RetrieveLocalClockResponse *, const char*, const char*); - -#define soap_read_KMS_CA__RetrieveLocalClockResponse(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_KMS_CA__RetrieveLocalClockResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_CA__RetrieveLocalClockResponse * SOAP_FMAC4 soap_get_KMS_CA__RetrieveLocalClockResponse(struct soap*, struct KMS_CA__RetrieveLocalClockResponse *, const char*, const char*); - -#define soap_new_KMS_CA__RetrieveLocalClockResponse(soap, n) soap_instantiate_KMS_CA__RetrieveLocalClockResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_CA__RetrieveLocalClockResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_CA__RetrieveLocalClockResponse * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveLocalClockResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveLocalClockResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate (25) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveRootCACertificate(struct soap*, struct KMS_CA__RetrieveRootCACertificate *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveRootCACertificate(struct soap*, const struct KMS_CA__RetrieveRootCACertificate *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveRootCACertificate(struct soap*, const char*, int, const struct KMS_CA__RetrieveRootCACertificate *, const char*); -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificate * SOAP_FMAC4 soap_in_KMS_CA__RetrieveRootCACertificate(struct soap*, const char*, struct KMS_CA__RetrieveRootCACertificate *, const char*); - -#define soap_write_KMS_CA__RetrieveRootCACertificate(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_KMS_CA__RetrieveRootCACertificate(soap, data), 0) || KMS_CA::soap_put_KMS_CA__RetrieveRootCACertificate(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveRootCACertificate(struct soap*, const struct KMS_CA__RetrieveRootCACertificate *, const char*, const char*); - -#define soap_read_KMS_CA__RetrieveRootCACertificate(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_KMS_CA__RetrieveRootCACertificate(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificate * SOAP_FMAC4 soap_get_KMS_CA__RetrieveRootCACertificate(struct soap*, struct KMS_CA__RetrieveRootCACertificate *, const char*, const char*); - -#define soap_new_KMS_CA__RetrieveRootCACertificate(soap, n) soap_instantiate_KMS_CA__RetrieveRootCACertificate(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_CA__RetrieveRootCACertificate(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_CA__RetrieveRootCACertificate * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveRootCACertificate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveRootCACertificate(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse (22) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, struct KMS_CA__RetrieveRootCACertificateResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, const struct KMS_CA__RetrieveRootCACertificateResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, const char*, int, const struct KMS_CA__RetrieveRootCACertificateResponse *, const char*); -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificateResponse * SOAP_FMAC4 soap_in_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, const char*, struct KMS_CA__RetrieveRootCACertificateResponse *, const char*); - -#define soap_write_KMS_CA__RetrieveRootCACertificateResponse(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_KMS_CA__RetrieveRootCACertificateResponse(soap, data), 0) || KMS_CA::soap_put_KMS_CA__RetrieveRootCACertificateResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, const struct KMS_CA__RetrieveRootCACertificateResponse *, const char*, const char*); - -#define soap_read_KMS_CA__RetrieveRootCACertificateResponse(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_KMS_CA__RetrieveRootCACertificateResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_CA__RetrieveRootCACertificateResponse * SOAP_FMAC4 soap_get_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, struct KMS_CA__RetrieveRootCACertificateResponse *, const char*, const char*); - -#define soap_new_KMS_CA__RetrieveRootCACertificateResponse(soap, n) soap_instantiate_KMS_CA__RetrieveRootCACertificateResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_CA__RetrieveRootCACertificateResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_CA__RetrieveRootCACertificateResponse * SOAP_FMAC2 soap_instantiate_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_CA__RetrieveRootCACertificateResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_CA_xsd__hexBinary -#define SOAP_TYPE_KMS_CA_xsd__hexBinary (18) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap*, struct xsd__hexBinary *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap*, struct xsd__hexBinary const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap*, const char*, int, const struct xsd__hexBinary *, const char*); -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap*, const char*, struct xsd__hexBinary *, const char*); - -#define soap_write_xsd__hexBinary(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_xsd__hexBinary(soap, data), 0) || KMS_CA::soap_put_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap*, const struct xsd__hexBinary *, const char*, const char*); - -#define soap_read_xsd__hexBinary(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap*, struct xsd__hexBinary *, const char*, const char*); - -#define soap_new_xsd__hexBinary(soap, n) soap_instantiate_xsd__hexBinary(soap, n, NULL, NULL, NULL) - - -#define soap_delete_xsd__hexBinary(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Reason -#define SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Reason (39) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); - -#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || KMS_CA::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Detail -#define SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Detail (38) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); - -#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || KMS_CA::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Code -#define SOAP_TYPE_KMS_CA_PointerToSOAP_ENV__Code (32) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); - -#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || KMS_CA::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); - -#endif - -#ifndef SOAP_TYPE_KMS_CA_PointerTounsignedByte -#define SOAP_TYPE_KMS_CA_PointerTounsignedByte (21) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap*, unsigned char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap*, const char *, int, unsigned char *const*, const char *); -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap*, const char*, unsigned char **, const char*); - -#define soap_write_PointerTounsignedByte(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_PointerTounsignedByte(soap, data), 0) || KMS_CA::soap_put_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap*, unsigned char *const*, const char*, const char*); - -#define soap_read_PointerTounsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap*, unsigned char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__duration -#define SOAP_TYPE_KMS_CA_xsd__duration (17) -#endif - -#define soap_default_xsd__duration(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__duration(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__duration(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_xsd__duration(soap, data), 0) || KMS_CA::soap_put_xsd__duration(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__duration(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__dateTime -#define SOAP_TYPE_KMS_CA_xsd__dateTime (16) -#endif - -#define soap_default_xsd__dateTime(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__dateTime(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__dateTime(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_xsd__dateTime(soap, data), 0) || KMS_CA::soap_put_xsd__dateTime(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__dateTime(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__dateTime(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_xsd__string -#define SOAP_TYPE_KMS_CA_xsd__string (7) -#endif - -#define soap_default_xsd__string(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__string(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__string(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_xsd__string(soap, data), 0) || KMS_CA::soap_put_xsd__string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__string(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_xsd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA__QName -#define SOAP_TYPE_KMS_CA__QName (5) -#endif - -#define soap_default__QName(soap, a) soap_default_string(soap, a) - - -#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); - -#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize__QName(soap, data), 0) || KMS_CA::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); - -#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_CA_string -#define SOAP_TYPE_KMS_CA_string (4) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); - -#define soap_write_string(soap, data) ( soap_begin_send(soap) || (KMS_CA::soap_serialize_string(soap, data), 0) || KMS_CA::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !KMS_CA::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); - -} // namespace KMS_CA - - -#endif - -/* End of KMS_CAH.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CAStub.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CAStub.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,286 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CAStub.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/CAService/KMS_CA_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_CAStub_H -#define KMS_CAStub_H -#ifndef WITH_NONAMESPACES -#define WITH_NONAMESPACES -#endif -#ifndef WITH_NOGLOBAL -#define WITH_NOGLOBAL -#endif -#include "stdsoap2.h" - -namespace KMS_CA { - -/******************************************************************************\ - * * - * Enumerations * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Types with Custom Serializers * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Classes and Structs * - * * -\******************************************************************************/ - - -#if 0 /* volatile type: do not declare here, declared elsewhere */ - -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__hexBinary -#define SOAP_TYPE_KMS_CA_xsd__hexBinary (18) -/* hexBinary schema type: */ -struct xsd__hexBinary -{ -public: - unsigned char *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificateResponse (22) -/* KMS-CA:RetrieveRootCACertificateResponse */ -struct KMS_CA__RetrieveRootCACertificateResponse -{ -public: - struct xsd__hexBinary RootCACertificate; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:hexBinary */ - long AuthenticationHashIterationCount; /* required element of type xsd:int */ - struct xsd__hexBinary ClientAuthenticationChallenge; /* required element of type xsd:hexBinary */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveRootCACertificate (25) -/* KMS-CA:RetrieveRootCACertificate */ -struct KMS_CA__RetrieveRootCACertificate -{ -public: - char *EntityID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClockResponse (26) -/* KMS-CA:RetrieveLocalClockResponse */ -struct KMS_CA__RetrieveLocalClockResponse -{ -public: - char *CurrentTime; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:dateTime */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock -#define SOAP_TYPE_KMS_CA_KMS_CA__RetrieveLocalClock (29) -/* KMS-CA:RetrieveLocalClock */ -struct KMS_CA__RetrieveLocalClock -{ -public: - char *EntityID; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Header -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Header (30) -/* SOAP Header: */ -struct SOAP_ENV__Header -{ -#ifdef WITH_NOEMPTYSTRUCT -private: - char dummy; /* dummy member to enable compilation */ -#endif -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Code -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Code (31) -/* SOAP Fault Code: */ -struct SOAP_ENV__Code -{ -public: - char *SOAP_ENV__Value; /* optional element of type xsd:QName */ - struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Detail (33) -/* SOAP-ENV:Detail */ -struct SOAP_ENV__Detail -{ -public: - int __type; /* any type of element (defined below) */ - void *fault; /* transient */ - char *__any; -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Reason (36) -/* SOAP-ENV:Reason */ -struct SOAP_ENV__Reason -{ -public: - char *SOAP_ENV__Text; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_CA_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_CA_SOAP_ENV__Fault (37) -/* SOAP Fault: */ -struct SOAP_ENV__Fault -{ -public: - char *faultcode; /* optional element of type xsd:QName */ - char *faultstring; /* optional element of type xsd:string */ - char *faultactor; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ - struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ - struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ - char *SOAP_ENV__Node; /* optional element of type xsd:string */ - char *SOAP_ENV__Role; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ -}; -#endif - -/******************************************************************************\ - * * - * Typedefs * - * * -\******************************************************************************/ - -#ifndef SOAP_TYPE_KMS_CA__QName -#define SOAP_TYPE_KMS_CA__QName (5) -typedef char *_QName; -#endif - -#ifndef SOAP_TYPE_KMS_CA__XML -#define SOAP_TYPE_KMS_CA__XML (6) -typedef char *_XML; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__string -#define SOAP_TYPE_KMS_CA_xsd__string (7) -typedef char *xsd__string; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__float -#define SOAP_TYPE_KMS_CA_xsd__float (9) -typedef float xsd__float; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__int -#define SOAP_TYPE_KMS_CA_xsd__int (11) -typedef long xsd__int; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__boolean -#define SOAP_TYPE_KMS_CA_xsd__boolean (13) -typedef bool xsd__boolean; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__long -#define SOAP_TYPE_KMS_CA_xsd__long (15) -typedef LONG64 xsd__long; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__dateTime -#define SOAP_TYPE_KMS_CA_xsd__dateTime (16) -typedef char *xsd__dateTime; -#endif - -#ifndef SOAP_TYPE_KMS_CA_xsd__duration -#define SOAP_TYPE_KMS_CA_xsd__duration (17) -typedef char *xsd__duration; -#endif - - -/******************************************************************************\ - * * - * Externals * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Server-Side Operations * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 KMS_CA__RetrieveRootCACertificate(struct soap*, char *EntityID, struct KMS_CA__RetrieveRootCACertificateResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_CA__RetrieveLocalClock(struct soap*, char *EntityID, struct KMS_CA__RetrieveLocalClockResponse &result); - -/******************************************************************************\ - * * - * Server-Side Skeletons to Invoke Service Operations * - * * -\******************************************************************************/ - -SOAP_FMAC5 int SOAP_FMAC6 KMS_CA_serve(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_CA_serve_request(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_CA__RetrieveRootCACertificate(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_CA__RetrieveLocalClock(struct soap*); - -/******************************************************************************\ - * * - * Client-Side Call Stubs * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_CA__RetrieveRootCACertificate(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *EntityID, struct KMS_CA__RetrieveRootCACertificateResponse &result); - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_CA__RetrieveLocalClock(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *EntityID, struct KMS_CA__RetrieveLocalClockResponse &result); - -} // namespace KMS_CA - - -#endif - -/* End of KMS_CAStub.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_Certificate.nsmap --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_Certificate.nsmap Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include "KMS_CertificateH.h" -SOAP_NMAC struct Namespace KMS_Certificate_namespaces[] = -{ - {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope"}, - {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding"}, - {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"}, - {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"}, - {"KMS-Certificate", "http://www.sun.com/KMS/KMS-Certificate"}, - {NULL, NULL} -}; diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateC.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateC.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2425 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CertificateC.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/CertificateService/KMS_Certificate_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif - -#include "KMS_CertificateH.h" - -namespace KMS_Certificate { - -SOAP_SOURCE_STAMP("@(#) KMS_CertificateC.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) -{ - if (soap->header) - soap_serialize_SOAP_ENV__Header(soap, soap->header); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) -{ - if (soap->header) - { soap->part = SOAP_IN_HEADER; - if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) - return soap->error; - soap->part = SOAP_END_HEADER; - } - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) -{ - soap->part = SOAP_IN_HEADER; - soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); - soap->part = SOAP_END_HEADER; - return soap->header == NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) -{ - if (!soap->header) - { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) - soap_default_SOAP_ENV__Header(soap, soap->header); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) -{ - if (!soap->fault) - { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); - if (!soap->fault) - return; - soap_default_SOAP_ENV__Fault(soap, soap->fault); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) - { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) - { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); - soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) -{ - soap_fault(soap); - if (soap->fault) - soap_serialize_SOAP_ENV__Fault(soap, soap->fault); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) -{ - if (soap->fault) - return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) -{ - return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) - { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); - } - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; - } - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; - return (const char**)&soap->fault->faultstring; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 1) - { if (!soap->fault->detail) - { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); - soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); - } - return (const char**)&soap->fault->detail->__any; - } - if (!soap->fault->SOAP_ENV__Detail) - { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); - soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); - } - return (const char**)&soap->fault->SOAP_ENV__Detail->__any; -} - -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) -{ - int t; - if (soap->version == 1) - { for (;;) - { if (!soap_getelement(soap, &t)) - if (soap->error || soap_ignore_element(soap)) - break; - } - } - if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) - soap->error = SOAP_OK; - return soap->error; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) -{ - if (soap_peek_element(soap)) - return NULL; - if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) - *type = soap_lookup_type(soap, soap->href); - switch (*type) - { - case SOAP_TYPE_KMS_Certificate_byte: - return soap_in_byte(soap, NULL, NULL, "xsd:byte"); - case SOAP_TYPE_KMS_Certificate_int: - return soap_in_int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_Certificate_xsd__int: - return soap_in_xsd__int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_Certificate_long: - return soap_in_long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Certificate_xsd__long: - return soap_in_xsd__long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Certificate_LONG64: - return soap_in_LONG64(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Certificate_xsd__float: - return soap_in_xsd__float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_Certificate_float: - return soap_in_float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_Certificate_unsignedByte: - return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Certificate_unsignedInt: - return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_Certificate_xsd__boolean: - return soap_in_xsd__boolean(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_Certificate_bool: - return soap_in_bool(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate: - return soap_in_KMS_Certificate__RetrieveEntityCertificate(soap, NULL, NULL, "KMS-Certificate:RetrieveEntityCertificate"); - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse: - return soap_in_KMS_Certificate__RetrieveEntityCertificateResponse(soap, NULL, NULL, "KMS-Certificate:RetrieveEntityCertificateResponse"); - case SOAP_TYPE_KMS_Certificate_xsd__hexBinary: - return soap_in_xsd__hexBinary(soap, NULL, NULL, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Certificate_PointerTounsignedByte: - return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Certificate_xsd__duration: - { char **s; - s = soap_in_xsd__duration(soap, NULL, NULL, "xsd:duration"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Certificate_xsd__dateTime: - { char **s; - s = soap_in_xsd__dateTime(soap, NULL, NULL, "xsd:dateTime"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Certificate_xsd__string: - { char **s; - s = soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Certificate__QName: - { char **s; - s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Certificate_string: - { char **s; - s = soap_in_string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - default: - { const char *t = soap->type; - if (!*t) - t = soap->tag; - if (!soap_match_tag(soap, t, "xsd:byte")) - { *type = SOAP_TYPE_KMS_Certificate_byte; - return soap_in_byte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_Certificate_int; - return soap_in_int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_Certificate_xsd__int; - return soap_in_xsd__int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Certificate_long; - return soap_in_long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Certificate_xsd__long; - return soap_in_xsd__long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Certificate_LONG64; - return soap_in_LONG64(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_Certificate_xsd__float; - return soap_in_xsd__float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_Certificate_float; - return soap_in_float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedByte")) - { *type = SOAP_TYPE_KMS_Certificate_unsignedByte; - return soap_in_unsignedByte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedInt")) - { *type = SOAP_TYPE_KMS_Certificate_unsignedInt; - return soap_in_unsignedInt(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_Certificate_xsd__boolean; - return soap_in_xsd__boolean(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_Certificate_bool; - return soap_in_bool(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Certificate:RetrieveEntityCertificate")) - { *type = SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate; - return soap_in_KMS_Certificate__RetrieveEntityCertificate(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Certificate:RetrieveEntityCertificateResponse")) - { *type = SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse; - return soap_in_KMS_Certificate__RetrieveEntityCertificateResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:hexBinary")) - { *type = SOAP_TYPE_KMS_Certificate_xsd__hexBinary; - return soap_in_xsd__hexBinary(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:duration")) - { char **s; - *type = SOAP_TYPE_KMS_Certificate_xsd__duration; - s = soap_in_xsd__duration(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:dateTime")) - { char **s; - *type = SOAP_TYPE_KMS_Certificate_xsd__dateTime; - s = soap_in_xsd__dateTime(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_Certificate_xsd__string; - s = soap_in_xsd__string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:QName")) - { char **s; - *type = SOAP_TYPE_KMS_Certificate__QName; - s = soap_in__QName(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_Certificate_string; - s = soap_in_string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - t = soap->tag; - } - } - soap->error = SOAP_TAG_MISMATCH; - return NULL; -} -#endif - -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) -{ - if (!soap_peek_element(soap)) - { int t; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); - if (soap->mustUnderstand && !soap->other) - return soap->error = SOAP_MUSTUNDERSTAND; - if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); - return soap->error = SOAP_TAG_MISMATCH; - } - if (!*soap->id || !soap_getelement(soap, &t)) - { soap->peeked = 0; - if (soap->fignore) - soap->error = soap->fignore(soap, soap->tag); - else - soap->error = SOAP_OK; - DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); - if (!soap->error && soap->body) - { soap->level++; - while (!soap_ignore_element(soap)) - ; - if (soap->error == SOAP_NO_TAG) - soap->error = soap_element_end_in(soap, NULL); - } - } - } - return soap->error; -} - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) -{ - int i; - struct soap_plist *pp; - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) - for (i = 0; i < SOAP_PTRHASH; i++) - for (pp = soap->pht[i]; pp; pp = pp->next) - if (pp->mark1 == 2 || pp->mark2 == 2) - if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) - return soap->error; - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) -{ - switch (type) - { - case SOAP_TYPE_KMS_Certificate_byte: - return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); - case SOAP_TYPE_KMS_Certificate_int: - return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_Certificate_xsd__int: - return soap_out_xsd__int(soap, tag, id, (const long *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_Certificate_long: - return soap_out_long(soap, tag, id, (const long *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Certificate_xsd__long: - return soap_out_xsd__long(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Certificate_LONG64: - return soap_out_LONG64(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Certificate_xsd__float: - return soap_out_xsd__float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_Certificate_float: - return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_Certificate_unsignedByte: - return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Certificate_unsignedInt: - return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_Certificate_xsd__boolean: - return soap_out_xsd__boolean(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_Certificate_bool: - return soap_out_bool(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate: - return soap_out_KMS_Certificate__RetrieveEntityCertificate(soap, tag, id, (const struct KMS_Certificate__RetrieveEntityCertificate *)ptr, "KMS-Certificate:RetrieveEntityCertificate"); - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse: - return soap_out_KMS_Certificate__RetrieveEntityCertificateResponse(soap, tag, id, (const struct KMS_Certificate__RetrieveEntityCertificateResponse *)ptr, "KMS-Certificate:RetrieveEntityCertificateResponse"); - case SOAP_TYPE_KMS_Certificate_xsd__hexBinary: - return soap_out_xsd__hexBinary(soap, tag, id, (const struct xsd__hexBinary *)ptr, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Certificate_PointerTounsignedByte: - return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Certificate_xsd__duration: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:duration"); - case SOAP_TYPE_KMS_Certificate_xsd__dateTime: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:dateTime"); - case SOAP_TYPE_KMS_Certificate_xsd__string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - case SOAP_TYPE_KMS_Certificate__QName: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); - case SOAP_TYPE_KMS_Certificate_string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - } - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) -{ - (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ - switch (type) - { - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate: - soap_serialize_KMS_Certificate__RetrieveEntityCertificate(soap, (const struct KMS_Certificate__RetrieveEntityCertificate *)ptr); - break; - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse: - soap_serialize_KMS_Certificate__RetrieveEntityCertificateResponse(soap, (const struct KMS_Certificate__RetrieveEntityCertificateResponse *)ptr); - break; - case SOAP_TYPE_KMS_Certificate_xsd__hexBinary: - soap_serialize_xsd__hexBinary(soap, (const struct xsd__hexBinary *)ptr); - break; - case SOAP_TYPE_KMS_Certificate_PointerTounsignedByte: - soap_serialize_PointerTounsignedByte(soap, (unsigned char *const*)ptr); - break; - case SOAP_TYPE_KMS_Certificate_xsd__duration: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Certificate_xsd__dateTime: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Certificate_xsd__string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Certificate__QName: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Certificate_string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - } -} -#endif - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) -{ - switch (t) - { - case SOAP_TYPE_KMS_Certificate_xsd__hexBinary: - return (void*)soap_instantiate_xsd__hexBinary(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse: - return (void*)soap_instantiate_KMS_Certificate__RetrieveEntityCertificateResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate: - return (void*)soap_instantiate_KMS_Certificate__RetrieveEntityCertificate(soap, -1, type, arrayType, n); -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header: - return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code: - return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail: - return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason: - return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault: - return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); -#endif - } - return NULL; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) -{ switch (p->type) - { - case SOAP_TYPE_KMS_Certificate_xsd__hexBinary: - if (p->size < 0) - SOAP_DELETE((struct xsd__hexBinary*)p->ptr); - else - SOAP_DELETE_ARRAY((struct xsd__hexBinary*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Certificate__RetrieveEntityCertificateResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Certificate__RetrieveEntityCertificateResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate: - if (p->size < 0) - SOAP_DELETE((struct KMS_Certificate__RetrieveEntityCertificate*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Certificate__RetrieveEntityCertificate*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); - break; - case SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); - break; - default: return SOAP_ERR; - } - return SOAP_OK; -} - -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) -{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_byte - *a = SOAP_DEFAULT_byte; -#else - *a = (char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) -{ - return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_byte); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) -{ char *p; - p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_byte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_byte); - if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) -{ - if ((p = soap_in_byte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_int - *a = SOAP_DEFAULT_int; -#else - *a = (int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) -{ - return soap_outint(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_int); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) -{ int *p; - p = soap_inint(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_int); - if (soap_out_int(soap, tag?tag:"int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) -{ - if ((p = soap_in_int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_xsd__int); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_xsd__int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__int); - if (soap_out_xsd__int(soap, tag?tag:"xsd:int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap *soap, long *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_long - *a = SOAP_DEFAULT_long; -#else - *a = (long)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_long); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_long); - if (soap_out_long(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_xsd__long); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_xsd__long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__long); - if (soap_out_xsd__long(soap, tag?tag:"xsd:long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap *soap, LONG64 *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_LONG64 - *a = SOAP_DEFAULT_LONG64; -#else - *a = (LONG64)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_LONG64); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_LONG64); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_LONG64); - if (soap_out_LONG64(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_LONG64(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_xsd__float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_xsd__float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__float); - if (soap_out_xsd__float(soap, tag?tag:"xsd:float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap *soap, float *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_float - *a = SOAP_DEFAULT_float; -#else - *a = (float)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_float); - if (soap_out_float(soap, tag?tag:"float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap *soap, unsigned char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedByte - *a = SOAP_DEFAULT_unsignedByte; -#else - *a = (unsigned char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) -{ - return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_unsignedByte); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) -{ unsigned char *p; - p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_unsignedByte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_unsignedByte); - if (soap_out_unsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap *soap, unsigned int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedInt - *a = SOAP_DEFAULT_unsignedInt; -#else - *a = (unsigned int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *a, const char *type) -{ - return soap_outunsignedInt(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_unsignedInt); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap *soap, const char *tag, unsigned int *a, const char *type) -{ unsigned int *p; - p = soap_inunsignedInt(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_unsignedInt); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap *soap, const unsigned int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_unsignedInt); - if (soap_out_unsignedInt(soap, tag?tag:"unsignedInt", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap *soap, unsigned int *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedInt(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap *soap, bool n) -{ return soap_bool2s(soap, n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_xsd__boolean), type) || soap_send(soap, soap_xsd__boolean2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap *soap, const char *s, bool *a) -{ - return soap_s2bool(soap, s, a); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_xsd__boolean, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2xsd__boolean(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_xsd__boolean, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__boolean); - if (soap_out_xsd__boolean(soap, tag?tag:"xsd:boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__boolean(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap *soap, bool *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_bool - *a = SOAP_DEFAULT_bool; -#else - *a = (bool)0; -#endif -} - -static const struct soap_code_map soap_codes_bool[] = -{ { (long)false, "false" }, - { (long)true, "true" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap *soap, bool n) -{ - (void)soap; /* appease -Wall -Werror */ -return soap_code_str(soap_codes_bool, n!=0); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_bool), type) || soap_send(soap, soap_bool2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap *soap, const char *s, bool *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_bool, s); - if (map) - *a = (bool)(map->code != 0); - else - { long n; - if (soap_s2long(soap, s, &n) || n < 0 || n > 1) - return soap->error = SOAP_TYPE; - *a = (bool)(n != 0); - } - return SOAP_OK; -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_bool, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2bool(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_bool, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_bool); - if (soap_out_bool(soap, tag?tag:"boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_bool(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->faultcode); - soap_default_string(soap, &a->faultstring); - soap_default_string(soap, &a->faultactor); - a->detail = NULL; - a->SOAP_ENV__Code = NULL; - a->SOAP_ENV__Reason = NULL; - soap_default_string(soap, &a->SOAP_ENV__Node); - soap_default_string(soap, &a->SOAP_ENV__Role); - a->SOAP_ENV__Detail = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->faultcode); - soap_serialize_string(soap, &a->faultstring); - soap_serialize_string(soap, &a->faultactor); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); - soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); - soap_serialize_string(soap, &a->SOAP_ENV__Node); - soap_serialize_string(soap, &a->SOAP_ENV__Role); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) -{ - const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault), type)) - return soap->error; - if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) - return soap->error; - if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "xsd:string")) - return soap->error; - if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "xsd:string")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) -{ - size_t soap_flag_faultcode = 1; - size_t soap_flag_faultstring = 1; - size_t soap_flag_faultactor = 1; - size_t soap_flag_detail = 1; - size_t soap_flag_SOAP_ENV__Code = 1; - size_t soap_flag_SOAP_ENV__Reason = 1; - size_t soap_flag_SOAP_ENV__Node = 1; - size_t soap_flag_SOAP_ENV__Role = 1; - size_t soap_flag_SOAP_ENV__Detail = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Fault(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) - { soap_flag_faultcode--; - continue; - } - if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) - { soap_flag_faultstring--; - continue; - } - if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) - { soap_flag_faultactor--; - continue; - } - if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) - { soap_flag_detail--; - continue; - } - if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) - { soap_flag_SOAP_ENV__Code--; - continue; - } - if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) - { soap_flag_SOAP_ENV__Reason--; - continue; - } - if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) - { soap_flag_SOAP_ENV__Node--; - continue; - } - if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) - { soap_flag_SOAP_ENV__Role--; - continue; - } - if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) - { soap_flag_SOAP_ENV__Detail--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault); - if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); - if (size) - *size = sizeof(struct SOAP_ENV__Fault); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Fault); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Fault*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); - *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason), type)) - return soap->error; - if (soap->lang) - soap_set_attr(soap, "xml:lang", soap->lang, 1); - if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Text = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Reason(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) - { soap_flag_SOAP_ENV__Text--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason); - if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); - if (size) - *size = sizeof(struct SOAP_ENV__Reason); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Reason); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Reason*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); - *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - a->__type = 0; - a->fault = NULL; - a->__any = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_markelement(soap, a->fault, a->__type); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail), type)) - return soap->error; - if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) - return soap->error; - soap_outliteral(soap, "-any", &a->__any, NULL); - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) -{ - size_t soap_flag_fault = 1; - size_t soap_flag___any = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Detail(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) - if ((a->fault = soap_getelement(soap, &a->__type))) - { soap_flag_fault = 0; - continue; - } - if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_inliteral(soap, "-any", &a->__any)) - { soap_flag___any--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail); - if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); - if (size) - *size = sizeof(struct SOAP_ENV__Detail); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Detail); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Detail*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); - *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->SOAP_ENV__Value); - a->SOAP_ENV__Subcode = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->SOAP_ENV__Value); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) -{ - const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code), type)) - return soap->error; - if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Value = 1; - size_t soap_flag_SOAP_ENV__Subcode = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Code(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) - { soap_flag_SOAP_ENV__Value--; - continue; - } - if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) - { soap_flag_SOAP_ENV__Subcode--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code); - if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); - if (size) - *size = sizeof(struct SOAP_ENV__Code); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Code); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Code*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); - *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header), type)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Header(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header); - if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); - if (size) - *size = sizeof(struct SOAP_ENV__Header); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Header); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Header*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); - *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, struct KMS_Certificate__RetrieveEntityCertificate *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->EntityID); - soap_default_xsd__hexBinary(soap, &a->ClientAuthenticationResponse); - soap_default_xsd__hexBinary(soap, &a->ServerAuthenticationChallenge); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, const struct KMS_Certificate__RetrieveEntityCertificate *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->EntityID); - soap_serialize_xsd__hexBinary(soap, &a->ClientAuthenticationResponse); - soap_serialize_xsd__hexBinary(soap, &a->ServerAuthenticationChallenge); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, const char *tag, int id, const struct KMS_Certificate__RetrieveEntityCertificate *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate), type)) - return soap->error; - if (soap_out_xsd__string(soap, "EntityID", -1, &a->EntityID, "xsd:string")) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "ClientAuthenticationResponse", -1, &a->ClientAuthenticationResponse, "xsd:hexBinary")) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "ServerAuthenticationChallenge", -1, &a->ServerAuthenticationChallenge, "xsd:hexBinary")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificate * SOAP_FMAC4 soap_in_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, const char *tag, struct KMS_Certificate__RetrieveEntityCertificate *a, const char *type) -{ - size_t soap_flag_EntityID = 1; - size_t soap_flag_ClientAuthenticationResponse = 1; - size_t soap_flag_ServerAuthenticationChallenge = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Certificate__RetrieveEntityCertificate *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate, sizeof(struct KMS_Certificate__RetrieveEntityCertificate), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Certificate__RetrieveEntityCertificate(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_EntityID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "EntityID", &a->EntityID, "xsd:string")) - { soap_flag_EntityID--; - continue; - } - if (soap_flag_ClientAuthenticationResponse && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "ClientAuthenticationResponse", &a->ClientAuthenticationResponse, "xsd:hexBinary")) - { soap_flag_ClientAuthenticationResponse--; - continue; - } - if (soap_flag_ServerAuthenticationChallenge && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "ServerAuthenticationChallenge", &a->ServerAuthenticationChallenge, "xsd:hexBinary")) - { soap_flag_ServerAuthenticationChallenge--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Certificate__RetrieveEntityCertificate *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate, 0, sizeof(struct KMS_Certificate__RetrieveEntityCertificate), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_ClientAuthenticationResponse > 0 || soap_flag_ServerAuthenticationChallenge > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, const struct KMS_Certificate__RetrieveEntityCertificate *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate); - if (soap_out_KMS_Certificate__RetrieveEntityCertificate(soap, tag?tag:"KMS-Certificate:RetrieveEntityCertificate", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificate * SOAP_FMAC4 soap_get_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, struct KMS_Certificate__RetrieveEntityCertificate *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Certificate__RetrieveEntityCertificate(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Certificate__RetrieveEntityCertificate * SOAP_FMAC2 soap_instantiate_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Certificate__RetrieveEntityCertificate(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Certificate__RetrieveEntityCertificate); - if (size) - *size = sizeof(struct KMS_Certificate__RetrieveEntityCertificate); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Certificate__RetrieveEntityCertificate[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Certificate__RetrieveEntityCertificate); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Certificate__RetrieveEntityCertificate*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Certificate__RetrieveEntityCertificate %p -> %p\n", q, p)); - *(struct KMS_Certificate__RetrieveEntityCertificate*)p = *(struct KMS_Certificate__RetrieveEntityCertificate*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, struct KMS_Certificate__RetrieveEntityCertificateResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__hexBinary(soap, &a->ServerAuthenticationResponse); - soap_default_xsd__hexBinary(soap, &a->Certificate); - soap_default_xsd__hexBinary(soap, &a->WrappedPrivateKeyMaterial); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, const struct KMS_Certificate__RetrieveEntityCertificateResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__hexBinary(soap, &a->ServerAuthenticationResponse); - soap_serialize_xsd__hexBinary(soap, &a->Certificate); - soap_serialize_xsd__hexBinary(soap, &a->WrappedPrivateKeyMaterial); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, const char *tag, int id, const struct KMS_Certificate__RetrieveEntityCertificateResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse), type)) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "ServerAuthenticationResponse", -1, &a->ServerAuthenticationResponse, "xsd:hexBinary")) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "Certificate", -1, &a->Certificate, "xsd:hexBinary")) - return soap->error; - if (soap_out_xsd__hexBinary(soap, "WrappedPrivateKeyMaterial", -1, &a->WrappedPrivateKeyMaterial, "xsd:hexBinary")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificateResponse * SOAP_FMAC4 soap_in_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, const char *tag, struct KMS_Certificate__RetrieveEntityCertificateResponse *a, const char *type) -{ - size_t soap_flag_ServerAuthenticationResponse = 1; - size_t soap_flag_Certificate = 1; - size_t soap_flag_WrappedPrivateKeyMaterial = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Certificate__RetrieveEntityCertificateResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse, sizeof(struct KMS_Certificate__RetrieveEntityCertificateResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Certificate__RetrieveEntityCertificateResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_ServerAuthenticationResponse && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "ServerAuthenticationResponse", &a->ServerAuthenticationResponse, "xsd:hexBinary")) - { soap_flag_ServerAuthenticationResponse--; - continue; - } - if (soap_flag_Certificate && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "Certificate", &a->Certificate, "xsd:hexBinary")) - { soap_flag_Certificate--; - continue; - } - if (soap_flag_WrappedPrivateKeyMaterial && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__hexBinary(soap, "WrappedPrivateKeyMaterial", &a->WrappedPrivateKeyMaterial, "xsd:hexBinary")) - { soap_flag_WrappedPrivateKeyMaterial--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Certificate__RetrieveEntityCertificateResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse, 0, sizeof(struct KMS_Certificate__RetrieveEntityCertificateResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_ServerAuthenticationResponse > 0 || soap_flag_Certificate > 0 || soap_flag_WrappedPrivateKeyMaterial > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, const struct KMS_Certificate__RetrieveEntityCertificateResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse); - if (soap_out_KMS_Certificate__RetrieveEntityCertificateResponse(soap, tag?tag:"KMS-Certificate:RetrieveEntityCertificateResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificateResponse * SOAP_FMAC4 soap_get_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, struct KMS_Certificate__RetrieveEntityCertificateResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Certificate__RetrieveEntityCertificateResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Certificate__RetrieveEntityCertificateResponse * SOAP_FMAC2 soap_instantiate_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Certificate__RetrieveEntityCertificateResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Certificate__RetrieveEntityCertificateResponse); - if (size) - *size = sizeof(struct KMS_Certificate__RetrieveEntityCertificateResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Certificate__RetrieveEntityCertificateResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Certificate__RetrieveEntityCertificateResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Certificate__RetrieveEntityCertificateResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Certificate__RetrieveEntityCertificateResponse %p -> %p\n", q, p)); - *(struct KMS_Certificate__RetrieveEntityCertificateResponse*)p = *(struct KMS_Certificate__RetrieveEntityCertificateResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary const*a) -{ - if (a->__ptr) - soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Certificate_xsd__hexBinary); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap *soap, const char *tag, int id, const struct xsd__hexBinary *a, const char *type) -{ - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Certificate_xsd__hexBinary); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - if (soap_puthex(soap, a->__ptr, a->__size)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap *soap, const char *tag, struct xsd__hexBinary *a, const char *type) -{ - (void)type; /* appease -Wall -Werror */ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":hexBinary")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct xsd__hexBinary *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Certificate_xsd__hexBinary, sizeof(struct xsd__hexBinary), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_xsd__hexBinary(soap, a); - if (soap->body && !*soap->href) - { - a->__ptr = soap_gethex(soap, &a->__size); - if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct xsd__hexBinary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Certificate_xsd__hexBinary, 0, sizeof(struct xsd__hexBinary), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap *soap, const struct xsd__hexBinary *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Certificate_xsd__hexBinary); - if (soap_out_xsd__hexBinary(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__hexBinary(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__hexBinary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Certificate_xsd__hexBinary, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary); - if (size) - *size = sizeof(struct xsd__hexBinary); - } - else - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct xsd__hexBinary); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct xsd__hexBinary*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct xsd__hexBinary %p -> %p\n", q, p)); - *(struct xsd__hexBinary*)p = *(struct xsd__hexBinary*)q; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason)) - soap_serialize_SOAP_ENV__Reason(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Reason); - if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail)) - soap_serialize_SOAP_ENV__Detail(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Detail); - if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code)) - soap_serialize_SOAP_ENV__Code(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Code); - if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap *soap, unsigned char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_Certificate_unsignedByte); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap *soap, const char *tag, int id, unsigned char *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Certificate_unsignedByte); - if (id < 0) - return soap->error; - return soap_out_unsignedByte(soap, tag, id, *a, type); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap *soap, const char *tag, unsigned char **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (unsigned char **)soap_malloc(soap, sizeof(unsigned char *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_unsignedByte(soap, tag, *a, type))) - return NULL; - } - else - { a = (unsigned char **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Certificate_unsignedByte, sizeof(unsigned char), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap *soap, unsigned char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_PointerTounsignedByte); - if (soap_out_PointerTounsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap *soap, unsigned char **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerTounsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_xsd__duration); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_xsd__duration, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__duration); - if (soap_out_xsd__duration(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__duration(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_xsd__dateTime); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_xsd__dateTime, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__dateTime); - if (soap_out_xsd__dateTime(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__dateTime(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_xsd__string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_xsd__string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_xsd__string); - if (soap_out_xsd__string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate__QName); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Certificate__QName, 2, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate__QName); - if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in__QName(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_string - *a = SOAP_DEFAULT_string; -#else - *a = (char *)0; -#endif -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_Certificate_string); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Certificate_string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Certificate_string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Certificate_string); - if (soap_out_string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -} // namespace KMS_Certificate - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_CertificateC.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateClient.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateClient.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CertificateClient.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/CertificateService/KMS_Certificate_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif -#include "KMS_CertificateH.h" - -namespace KMS_Certificate { - -SOAP_SOURCE_STAMP("@(#) KMS_CertificateClient.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *EntityID, struct xsd__hexBinary ClientAuthenticationResponse, struct xsd__hexBinary ServerAuthenticationChallenge, struct KMS_Certificate__RetrieveEntityCertificateResponse &result) -{ struct KMS_Certificate__RetrieveEntityCertificate soap_tmp_KMS_Certificate__RetrieveEntityCertificate; - soap_tmp_KMS_Certificate__RetrieveEntityCertificate.EntityID = EntityID; - soap_tmp_KMS_Certificate__RetrieveEntityCertificate.ClientAuthenticationResponse = ClientAuthenticationResponse; - soap_tmp_KMS_Certificate__RetrieveEntityCertificate.ServerAuthenticationChallenge = ServerAuthenticationChallenge; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Certificate__RetrieveEntityCertificate(soap, &soap_tmp_KMS_Certificate__RetrieveEntityCertificate); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Certificate__RetrieveEntityCertificate(soap, &soap_tmp_KMS_Certificate__RetrieveEntityCertificate, "KMS-Certificate:RetrieveEntityCertificate", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Certificate__RetrieveEntityCertificate(soap, &soap_tmp_KMS_Certificate__RetrieveEntityCertificate, "KMS-Certificate:RetrieveEntityCertificate", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Certificate__RetrieveEntityCertificateResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Certificate__RetrieveEntityCertificateResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -} // namespace KMS_Certificate - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_CertificateClient.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateH.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateH.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,652 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CertificateH.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/CertificateService/KMS_Certificate_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_CertificateH_H -#define KMS_CertificateH_H -#include "KMS_CertificateStub.h" - -namespace KMS_Certificate { -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); -SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_byte -#define SOAP_TYPE_KMS_Certificate_byte (3) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); - -#define soap_write_byte(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); - -#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_int -#define SOAP_TYPE_KMS_Certificate_int (1) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); - -#define soap_write_int(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); - -#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__int -#define SOAP_TYPE_KMS_Certificate_xsd__int (11) -#endif - -#define soap_default_xsd__int(soap, a) soap_default_long(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap*, const char*, long *, const char*); - -#define soap_write_xsd__int(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_xsd__int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap*, const long *, const char*, const char*); - -#define soap_read_xsd__int(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_long -#define SOAP_TYPE_KMS_Certificate_long (10) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap*, long *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap*, const char*, long *, const char*); - -#define soap_write_long(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap*, const long *, const char*, const char*); - -#define soap_read_long(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__long -#define SOAP_TYPE_KMS_Certificate_xsd__long (15) -#endif - -#define soap_default_xsd__long(soap, a) soap_default_LONG64(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_xsd__long(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_xsd__long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_xsd__long(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_LONG64 -#define SOAP_TYPE_KMS_Certificate_LONG64 (14) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap*, LONG64 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_LONG64(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_LONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_LONG64(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_LONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__float -#define SOAP_TYPE_KMS_Certificate_xsd__float (9) -#endif - -#define soap_default_xsd__float(soap, a) soap_default_float(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap*, const char*, float *, const char*); - -#define soap_write_xsd__float(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_xsd__float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap*, const float *, const char*, const char*); - -#define soap_read_xsd__float(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_float -#define SOAP_TYPE_KMS_Certificate_float (8) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap*, float *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap*, const char*, float *, const char*); - -#define soap_write_float(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap*, const float *, const char*, const char*); - -#define soap_read_float(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_unsignedByte -#define SOAP_TYPE_KMS_Certificate_unsignedByte (20) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap*, unsigned char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap*, const char*, unsigned char *, const char*); - -#define soap_write_unsignedByte(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap*, const unsigned char *, const char*, const char*); - -#define soap_read_unsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap*, unsigned char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_unsignedInt -#define SOAP_TYPE_KMS_Certificate_unsignedInt (19) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap*, unsigned int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap*, const char*, int, const unsigned int *, const char*); -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap*, const char*, unsigned int *, const char*); - -#define soap_write_unsignedInt(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_unsignedInt(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap*, const unsigned int *, const char*, const char*); - -#define soap_read_unsignedInt(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap*, unsigned int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__boolean -#define SOAP_TYPE_KMS_Certificate_xsd__boolean (13) -#endif - -#define soap_default_xsd__boolean(soap, a) soap_default_bool(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap*, const char*, bool *); - -#define soap_write_xsd__boolean(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_xsd__boolean(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap*, const bool *, const char*, const char*); - -#define soap_read_xsd__boolean(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__boolean(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap*, bool *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_bool -#define SOAP_TYPE_KMS_Certificate_bool (12) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap*, bool *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap*, const char*, bool *); - -#define soap_write_bool(soap, data) ( soap_begin_send(soap) || KMS_Certificate::soap_put_bool(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap*, const bool *, const char*, const char*); - -#define soap_read_bool(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_bool(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap*, bool *, const char*, const char*); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault (33) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); - -#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || KMS_Certificate::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason (32) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); - -#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || KMS_Certificate::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail (29) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); - -#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || KMS_Certificate::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code (27) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); - -#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_SOAP_ENV__Code(soap, data), 0) || KMS_Certificate::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header (26) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); - -#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_SOAP_ENV__Header(soap, data), 0) || KMS_Certificate::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate -#define SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate (25) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Certificate__RetrieveEntityCertificate(struct soap*, struct KMS_Certificate__RetrieveEntityCertificate *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Certificate__RetrieveEntityCertificate(struct soap*, const struct KMS_Certificate__RetrieveEntityCertificate *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Certificate__RetrieveEntityCertificate(struct soap*, const char*, int, const struct KMS_Certificate__RetrieveEntityCertificate *, const char*); -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificate * SOAP_FMAC4 soap_in_KMS_Certificate__RetrieveEntityCertificate(struct soap*, const char*, struct KMS_Certificate__RetrieveEntityCertificate *, const char*); - -#define soap_write_KMS_Certificate__RetrieveEntityCertificate(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_KMS_Certificate__RetrieveEntityCertificate(soap, data), 0) || KMS_Certificate::soap_put_KMS_Certificate__RetrieveEntityCertificate(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Certificate__RetrieveEntityCertificate(struct soap*, const struct KMS_Certificate__RetrieveEntityCertificate *, const char*, const char*); - -#define soap_read_KMS_Certificate__RetrieveEntityCertificate(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_KMS_Certificate__RetrieveEntityCertificate(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificate * SOAP_FMAC4 soap_get_KMS_Certificate__RetrieveEntityCertificate(struct soap*, struct KMS_Certificate__RetrieveEntityCertificate *, const char*, const char*); - -#define soap_new_KMS_Certificate__RetrieveEntityCertificate(soap, n) soap_instantiate_KMS_Certificate__RetrieveEntityCertificate(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Certificate__RetrieveEntityCertificate(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Certificate__RetrieveEntityCertificate * SOAP_FMAC2 soap_instantiate_KMS_Certificate__RetrieveEntityCertificate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Certificate__RetrieveEntityCertificate(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse -#define SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse (22) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, struct KMS_Certificate__RetrieveEntityCertificateResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, const struct KMS_Certificate__RetrieveEntityCertificateResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, const char*, int, const struct KMS_Certificate__RetrieveEntityCertificateResponse *, const char*); -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificateResponse * SOAP_FMAC4 soap_in_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, const char*, struct KMS_Certificate__RetrieveEntityCertificateResponse *, const char*); - -#define soap_write_KMS_Certificate__RetrieveEntityCertificateResponse(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_KMS_Certificate__RetrieveEntityCertificateResponse(soap, data), 0) || KMS_Certificate::soap_put_KMS_Certificate__RetrieveEntityCertificateResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, const struct KMS_Certificate__RetrieveEntityCertificateResponse *, const char*, const char*); - -#define soap_read_KMS_Certificate__RetrieveEntityCertificateResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_KMS_Certificate__RetrieveEntityCertificateResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Certificate__RetrieveEntityCertificateResponse * SOAP_FMAC4 soap_get_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, struct KMS_Certificate__RetrieveEntityCertificateResponse *, const char*, const char*); - -#define soap_new_KMS_Certificate__RetrieveEntityCertificateResponse(soap, n) soap_instantiate_KMS_Certificate__RetrieveEntityCertificateResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Certificate__RetrieveEntityCertificateResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Certificate__RetrieveEntityCertificateResponse * SOAP_FMAC2 soap_instantiate_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Certificate__RetrieveEntityCertificateResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__hexBinary -#define SOAP_TYPE_KMS_Certificate_xsd__hexBinary (18) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap*, struct xsd__hexBinary *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap*, struct xsd__hexBinary const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap*, const char*, int, const struct xsd__hexBinary *, const char*); -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap*, const char*, struct xsd__hexBinary *, const char*); - -#define soap_write_xsd__hexBinary(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_xsd__hexBinary(soap, data), 0) || KMS_Certificate::soap_put_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap*, const struct xsd__hexBinary *, const char*, const char*); - -#define soap_read_xsd__hexBinary(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap*, struct xsd__hexBinary *, const char*, const char*); - -#define soap_new_xsd__hexBinary(soap, n) soap_instantiate_xsd__hexBinary(soap, n, NULL, NULL, NULL) - - -#define soap_delete_xsd__hexBinary(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Reason -#define SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Reason (35) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); - -#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || KMS_Certificate::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Detail -#define SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Detail (34) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); - -#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || KMS_Certificate::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Code -#define SOAP_TYPE_KMS_Certificate_PointerToSOAP_ENV__Code (28) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); - -#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || KMS_Certificate::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); - -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_PointerTounsignedByte -#define SOAP_TYPE_KMS_Certificate_PointerTounsignedByte (21) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap*, unsigned char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap*, const char *, int, unsigned char *const*, const char *); -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap*, const char*, unsigned char **, const char*); - -#define soap_write_PointerTounsignedByte(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_PointerTounsignedByte(soap, data), 0) || KMS_Certificate::soap_put_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap*, unsigned char *const*, const char*, const char*); - -#define soap_read_PointerTounsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap*, unsigned char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__duration -#define SOAP_TYPE_KMS_Certificate_xsd__duration (17) -#endif - -#define soap_default_xsd__duration(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__duration(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__duration(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_xsd__duration(soap, data), 0) || KMS_Certificate::soap_put_xsd__duration(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__duration(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__dateTime -#define SOAP_TYPE_KMS_Certificate_xsd__dateTime (16) -#endif - -#define soap_default_xsd__dateTime(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__dateTime(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__dateTime(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_xsd__dateTime(soap, data), 0) || KMS_Certificate::soap_put_xsd__dateTime(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__dateTime(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__dateTime(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__string -#define SOAP_TYPE_KMS_Certificate_xsd__string (7) -#endif - -#define soap_default_xsd__string(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__string(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__string(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_xsd__string(soap, data), 0) || KMS_Certificate::soap_put_xsd__string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__string(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_xsd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate__QName -#define SOAP_TYPE_KMS_Certificate__QName (5) -#endif - -#define soap_default__QName(soap, a) soap_default_string(soap, a) - - -#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); - -#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize__QName(soap, data), 0) || KMS_Certificate::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); - -#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Certificate_string -#define SOAP_TYPE_KMS_Certificate_string (4) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); - -#define soap_write_string(soap, data) ( soap_begin_send(soap) || (KMS_Certificate::soap_serialize_string(soap, data), 0) || KMS_Certificate::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !KMS_Certificate::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); - -} // namespace KMS_Certificate - - -#endif - -/* End of KMS_CertificateH.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateStub.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_CertificateStub.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,262 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_CertificateStub.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/CertificateService/KMS_Certificate_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_CertificateStub_H -#define KMS_CertificateStub_H -#ifndef WITH_NONAMESPACES -#define WITH_NONAMESPACES -#endif -#ifndef WITH_NOGLOBAL -#define WITH_NOGLOBAL -#endif -#include "stdsoap2.h" - -namespace KMS_Certificate { - -/******************************************************************************\ - * * - * Enumerations * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Types with Custom Serializers * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Classes and Structs * - * * -\******************************************************************************/ - - -#if 0 /* volatile type: do not declare here, declared elsewhere */ - -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__hexBinary -#define SOAP_TYPE_KMS_Certificate_xsd__hexBinary (18) -/* hexBinary schema type: */ -struct xsd__hexBinary -{ -public: - unsigned char *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse -#define SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificateResponse (22) -/* KMS-Certificate:RetrieveEntityCertificateResponse */ -struct KMS_Certificate__RetrieveEntityCertificateResponse -{ -public: - struct xsd__hexBinary ServerAuthenticationResponse; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:hexBinary */ - struct xsd__hexBinary Certificate; /* required element of type xsd:hexBinary */ - struct xsd__hexBinary WrappedPrivateKeyMaterial; /* required element of type xsd:hexBinary */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate -#define SOAP_TYPE_KMS_Certificate_KMS_Certificate__RetrieveEntityCertificate (25) -/* KMS-Certificate:RetrieveEntityCertificate */ -struct KMS_Certificate__RetrieveEntityCertificate -{ -public: - char *EntityID; /* optional element of type xsd:string */ - struct xsd__hexBinary ClientAuthenticationResponse; /* required element of type xsd:hexBinary */ - struct xsd__hexBinary ServerAuthenticationChallenge; /* required element of type xsd:hexBinary */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Header (26) -/* SOAP Header: */ -struct SOAP_ENV__Header -{ -#ifdef WITH_NOEMPTYSTRUCT -private: - char dummy; /* dummy member to enable compilation */ -#endif -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Code (27) -/* SOAP Fault Code: */ -struct SOAP_ENV__Code -{ -public: - char *SOAP_ENV__Value; /* optional element of type xsd:QName */ - struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Detail (29) -/* SOAP-ENV:Detail */ -struct SOAP_ENV__Detail -{ -public: - int __type; /* any type of element (defined below) */ - void *fault; /* transient */ - char *__any; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Reason (32) -/* SOAP-ENV:Reason */ -struct SOAP_ENV__Reason -{ -public: - char *SOAP_ENV__Text; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_Certificate_SOAP_ENV__Fault (33) -/* SOAP Fault: */ -struct SOAP_ENV__Fault -{ -public: - char *faultcode; /* optional element of type xsd:QName */ - char *faultstring; /* optional element of type xsd:string */ - char *faultactor; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ - struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ - struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ - char *SOAP_ENV__Node; /* optional element of type xsd:string */ - char *SOAP_ENV__Role; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ -}; -#endif - -/******************************************************************************\ - * * - * Typedefs * - * * -\******************************************************************************/ - -#ifndef SOAP_TYPE_KMS_Certificate__QName -#define SOAP_TYPE_KMS_Certificate__QName (5) -typedef char *_QName; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate__XML -#define SOAP_TYPE_KMS_Certificate__XML (6) -typedef char *_XML; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__string -#define SOAP_TYPE_KMS_Certificate_xsd__string (7) -typedef char *xsd__string; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__float -#define SOAP_TYPE_KMS_Certificate_xsd__float (9) -typedef float xsd__float; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__int -#define SOAP_TYPE_KMS_Certificate_xsd__int (11) -typedef long xsd__int; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__boolean -#define SOAP_TYPE_KMS_Certificate_xsd__boolean (13) -typedef bool xsd__boolean; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__long -#define SOAP_TYPE_KMS_Certificate_xsd__long (15) -typedef LONG64 xsd__long; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__dateTime -#define SOAP_TYPE_KMS_Certificate_xsd__dateTime (16) -typedef char *xsd__dateTime; -#endif - -#ifndef SOAP_TYPE_KMS_Certificate_xsd__duration -#define SOAP_TYPE_KMS_Certificate_xsd__duration (17) -typedef char *xsd__duration; -#endif - - -/******************************************************************************\ - * * - * Externals * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Server-Side Operations * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Certificate__RetrieveEntityCertificate(struct soap*, char *EntityID, struct xsd__hexBinary ClientAuthenticationResponse, struct xsd__hexBinary ServerAuthenticationChallenge, struct KMS_Certificate__RetrieveEntityCertificateResponse &result); - -/******************************************************************************\ - * * - * Server-Side Skeletons to Invoke Service Operations * - * * -\******************************************************************************/ - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Certificate_serve(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Certificate_serve_request(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Certificate__RetrieveEntityCertificate(struct soap*); - -/******************************************************************************\ - * * - * Client-Side Call Stubs * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Certificate__RetrieveEntityCertificate(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *EntityID, struct xsd__hexBinary ClientAuthenticationResponse, struct xsd__hexBinary ServerAuthenticationChallenge, struct KMS_Certificate__RetrieveEntityCertificateResponse &result); - -} // namespace KMS_Certificate - - -#endif - -/* End of KMS_CertificateStub.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_Discovery.nsmap --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_Discovery.nsmap Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include "KMS_DiscoveryH.h" -SOAP_NMAC struct Namespace KMS_Discovery_namespaces[] = -{ - {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope"}, - {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding"}, - {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"}, - {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"}, - {"KMS-Discovery", "http://www.sun.com/KMS/KMS-Discovery"}, - {NULL, NULL} -}; diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryC.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryC.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2904 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_DiscoveryC.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/DiscoveryService/KMS_Discovery_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif - -#include "KMS_DiscoveryH.h" - -namespace KMS_Discovery { - -SOAP_SOURCE_STAMP("@(#) KMS_DiscoveryC.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) -{ - if (soap->header) - soap_serialize_SOAP_ENV__Header(soap, soap->header); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) -{ - if (soap->header) - { soap->part = SOAP_IN_HEADER; - if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) - return soap->error; - soap->part = SOAP_END_HEADER; - } - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) -{ - soap->part = SOAP_IN_HEADER; - soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); - soap->part = SOAP_END_HEADER; - return soap->header == NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) -{ - if (!soap->header) - { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) - soap_default_SOAP_ENV__Header(soap, soap->header); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) -{ - if (!soap->fault) - { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); - if (!soap->fault) - return; - soap_default_SOAP_ENV__Fault(soap, soap->fault); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) - { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) - { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); - soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) -{ - soap_fault(soap); - if (soap->fault) - soap_serialize_SOAP_ENV__Fault(soap, soap->fault); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) -{ - if (soap->fault) - return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) -{ - return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) - { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); - } - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; - } - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; - return (const char**)&soap->fault->faultstring; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 1) - { if (!soap->fault->detail) - { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); - soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); - } - return (const char**)&soap->fault->detail->__any; - } - if (!soap->fault->SOAP_ENV__Detail) - { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); - soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); - } - return (const char**)&soap->fault->SOAP_ENV__Detail->__any; -} - -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) -{ - int t; - if (soap->version == 1) - { for (;;) - { if (!soap_getelement(soap, &t)) - if (soap->error || soap_ignore_element(soap)) - break; - } - } - if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) - soap->error = SOAP_OK; - return soap->error; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) -{ - if (soap_peek_element(soap)) - return NULL; - if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) - *type = soap_lookup_type(soap, soap->href); - switch (*type) - { - case SOAP_TYPE_KMS_Discovery_byte: - return soap_in_byte(soap, NULL, NULL, "xsd:byte"); - case SOAP_TYPE_KMS_Discovery_int: - return soap_in_int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_Discovery_xsd__int: - return soap_in_xsd__int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE_KMS_Discovery_long: - return soap_in_long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Discovery_xsd__long: - return soap_in_xsd__long(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Discovery_LONG64: - return soap_in_LONG64(soap, NULL, NULL, "xsd:long"); - case SOAP_TYPE_KMS_Discovery_xsd__float: - return soap_in_xsd__float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_Discovery_float: - return soap_in_float(soap, NULL, NULL, "xsd:float"); - case SOAP_TYPE_KMS_Discovery_unsignedByte: - return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Discovery_unsignedInt: - return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_Discovery_xsd__boolean: - return soap_in_xsd__boolean(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_Discovery_bool: - return soap_in_bool(soap, NULL, NULL, "xsd:boolean"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster: - return soap_in_KMS_Discovery__DiscoverCluster(soap, NULL, NULL, "KMS-Discovery:DiscoverCluster"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse: - return soap_in_KMS_Discovery__DiscoverClusterResponse(soap, NULL, NULL, "KMS-Discovery:DiscoverClusterResponse"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers: - return soap_in_KMS_Discovery__ArrayOfClusterMembers(soap, NULL, NULL, "KMS-Discovery:ArrayOfClusterMembers"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember: - return soap_in_KMS_Discovery_ClusterMember(soap, NULL, NULL, "KMS-Discovery-ClusterMember"); - case SOAP_TYPE_KMS_Discovery_xsd__hexBinary: - return soap_in_xsd__hexBinary(soap, NULL, NULL, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Discovery_PointerToKMS_Discovery_ClusterMember: - return soap_in_PointerToKMS_Discovery_ClusterMember(soap, NULL, NULL, "KMS-Discovery-ClusterMember"); - case SOAP_TYPE_KMS_Discovery_PointerTounsignedByte: - return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Discovery_xsd__networkAddress: - { char **s; - s = soap_in_xsd__networkAddress(soap, NULL, NULL, "xsd:networkAddress"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Discovery_xsd__kmaVersion: - { char **s; - s = soap_in_xsd__kmaVersion(soap, NULL, NULL, "xsd:kmaVersion"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Discovery_xsd__duration: - { char **s; - s = soap_in_xsd__duration(soap, NULL, NULL, "xsd:duration"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Discovery_xsd__dateTime: - { char **s; - s = soap_in_xsd__dateTime(soap, NULL, NULL, "xsd:dateTime"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Discovery_xsd__string: - { char **s; - s = soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Discovery__QName: - { char **s; - s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); - return s ? *s : NULL; - } - case SOAP_TYPE_KMS_Discovery_string: - { char **s; - s = soap_in_string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - default: - { const char *t = soap->type; - if (!*t) - t = soap->tag; - if (!soap_match_tag(soap, t, "xsd:byte")) - { *type = SOAP_TYPE_KMS_Discovery_byte; - return soap_in_byte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_Discovery_int; - return soap_in_int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_KMS_Discovery_xsd__int; - return soap_in_xsd__int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Discovery_long; - return soap_in_long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Discovery_xsd__long; - return soap_in_xsd__long(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:long")) - { *type = SOAP_TYPE_KMS_Discovery_LONG64; - return soap_in_LONG64(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_Discovery_xsd__float; - return soap_in_xsd__float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:float")) - { *type = SOAP_TYPE_KMS_Discovery_float; - return soap_in_float(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedByte")) - { *type = SOAP_TYPE_KMS_Discovery_unsignedByte; - return soap_in_unsignedByte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:unsignedInt")) - { *type = SOAP_TYPE_KMS_Discovery_unsignedInt; - return soap_in_unsignedInt(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_Discovery_xsd__boolean; - return soap_in_xsd__boolean(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:boolean")) - { *type = SOAP_TYPE_KMS_Discovery_bool; - return soap_in_bool(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Discovery:DiscoverCluster")) - { *type = SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster; - return soap_in_KMS_Discovery__DiscoverCluster(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Discovery:DiscoverClusterResponse")) - { *type = SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse; - return soap_in_KMS_Discovery__DiscoverClusterResponse(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Discovery:ArrayOfClusterMembers")) - { *type = SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers; - return soap_in_KMS_Discovery__ArrayOfClusterMembers(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "KMS-Discovery-ClusterMember")) - { *type = SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember; - return soap_in_KMS_Discovery_ClusterMember(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:hexBinary")) - { *type = SOAP_TYPE_KMS_Discovery_xsd__hexBinary; - return soap_in_xsd__hexBinary(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:networkAddress")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery_xsd__networkAddress; - s = soap_in_xsd__networkAddress(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:kmaVersion")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery_xsd__kmaVersion; - s = soap_in_xsd__kmaVersion(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:duration")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery_xsd__duration; - s = soap_in_xsd__duration(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:dateTime")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery_xsd__dateTime; - s = soap_in_xsd__dateTime(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery_xsd__string; - s = soap_in_xsd__string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:QName")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery__QName; - s = soap_in__QName(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_KMS_Discovery_string; - s = soap_in_string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - t = soap->tag; - } - } - soap->error = SOAP_TAG_MISMATCH; - return NULL; -} -#endif - -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) -{ - if (!soap_peek_element(soap)) - { int t; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); - if (soap->mustUnderstand && !soap->other) - return soap->error = SOAP_MUSTUNDERSTAND; - if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); - return soap->error = SOAP_TAG_MISMATCH; - } - if (!*soap->id || !soap_getelement(soap, &t)) - { soap->peeked = 0; - if (soap->fignore) - soap->error = soap->fignore(soap, soap->tag); - else - soap->error = SOAP_OK; - DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); - if (!soap->error && soap->body) - { soap->level++; - while (!soap_ignore_element(soap)) - ; - if (soap->error == SOAP_NO_TAG) - soap->error = soap_element_end_in(soap, NULL); - } - } - } - return soap->error; -} - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) -{ - int i; - struct soap_plist *pp; - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) - for (i = 0; i < SOAP_PTRHASH; i++) - for (pp = soap->pht[i]; pp; pp = pp->next) - if (pp->mark1 == 2 || pp->mark2 == 2) - if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) - return soap->error; - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) -{ - switch (type) - { - case SOAP_TYPE_KMS_Discovery_byte: - return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); - case SOAP_TYPE_KMS_Discovery_int: - return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_Discovery_xsd__int: - return soap_out_xsd__int(soap, tag, id, (const long *)ptr, "xsd:int"); - case SOAP_TYPE_KMS_Discovery_long: - return soap_out_long(soap, tag, id, (const long *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Discovery_xsd__long: - return soap_out_xsd__long(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Discovery_LONG64: - return soap_out_LONG64(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); - case SOAP_TYPE_KMS_Discovery_xsd__float: - return soap_out_xsd__float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_Discovery_float: - return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float"); - case SOAP_TYPE_KMS_Discovery_unsignedByte: - return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Discovery_unsignedInt: - return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); - case SOAP_TYPE_KMS_Discovery_xsd__boolean: - return soap_out_xsd__boolean(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_Discovery_bool: - return soap_out_bool(soap, tag, id, (const bool *)ptr, "xsd:boolean"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster: - return soap_out_KMS_Discovery__DiscoverCluster(soap, tag, id, (const struct KMS_Discovery__DiscoverCluster *)ptr, "KMS-Discovery:DiscoverCluster"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse: - return soap_out_KMS_Discovery__DiscoverClusterResponse(soap, tag, id, (const struct KMS_Discovery__DiscoverClusterResponse *)ptr, "KMS-Discovery:DiscoverClusterResponse"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers: - return soap_out_KMS_Discovery__ArrayOfClusterMembers(soap, tag, id, (const struct KMS_Discovery__ArrayOfClusterMembers *)ptr, "KMS-Discovery:ArrayOfClusterMembers"); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember: - return soap_out_KMS_Discovery_ClusterMember(soap, tag, id, (const struct KMS_Discovery_ClusterMember *)ptr, "KMS-Discovery-ClusterMember"); - case SOAP_TYPE_KMS_Discovery_xsd__hexBinary: - return soap_out_xsd__hexBinary(soap, tag, id, (const struct xsd__hexBinary *)ptr, "xsd:hexBinary"); - case SOAP_TYPE_KMS_Discovery_PointerToKMS_Discovery_ClusterMember: - return soap_out_PointerToKMS_Discovery_ClusterMember(soap, tag, id, (struct KMS_Discovery_ClusterMember *const*)ptr, "KMS-Discovery-ClusterMember"); - case SOAP_TYPE_KMS_Discovery_PointerTounsignedByte: - return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); - case SOAP_TYPE_KMS_Discovery_xsd__networkAddress: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:networkAddress"); - case SOAP_TYPE_KMS_Discovery_xsd__kmaVersion: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:kmaVersion"); - case SOAP_TYPE_KMS_Discovery_xsd__duration: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:duration"); - case SOAP_TYPE_KMS_Discovery_xsd__dateTime: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:dateTime"); - case SOAP_TYPE_KMS_Discovery_xsd__string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - case SOAP_TYPE_KMS_Discovery__QName: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); - case SOAP_TYPE_KMS_Discovery_string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - } - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) -{ - (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ - switch (type) - { - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster: - soap_serialize_KMS_Discovery__DiscoverCluster(soap, (const struct KMS_Discovery__DiscoverCluster *)ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse: - soap_serialize_KMS_Discovery__DiscoverClusterResponse(soap, (const struct KMS_Discovery__DiscoverClusterResponse *)ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers: - soap_serialize_KMS_Discovery__ArrayOfClusterMembers(soap, (const struct KMS_Discovery__ArrayOfClusterMembers *)ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember: - soap_serialize_KMS_Discovery_ClusterMember(soap, (const struct KMS_Discovery_ClusterMember *)ptr); - break; - case SOAP_TYPE_KMS_Discovery_xsd__hexBinary: - soap_serialize_xsd__hexBinary(soap, (const struct xsd__hexBinary *)ptr); - break; - case SOAP_TYPE_KMS_Discovery_PointerToKMS_Discovery_ClusterMember: - soap_serialize_PointerToKMS_Discovery_ClusterMember(soap, (struct KMS_Discovery_ClusterMember *const*)ptr); - break; - case SOAP_TYPE_KMS_Discovery_PointerTounsignedByte: - soap_serialize_PointerTounsignedByte(soap, (unsigned char *const*)ptr); - break; - case SOAP_TYPE_KMS_Discovery_xsd__networkAddress: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Discovery_xsd__kmaVersion: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Discovery_xsd__duration: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Discovery_xsd__dateTime: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Discovery_xsd__string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Discovery__QName: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_KMS_Discovery_string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - } -} -#endif - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) -{ - switch (t) - { - case SOAP_TYPE_KMS_Discovery_xsd__hexBinary: - return (void*)soap_instantiate_xsd__hexBinary(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember: - return (void*)soap_instantiate_KMS_Discovery_ClusterMember(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers: - return (void*)soap_instantiate_KMS_Discovery__ArrayOfClusterMembers(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse: - return (void*)soap_instantiate_KMS_Discovery__DiscoverClusterResponse(soap, -1, type, arrayType, n); - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster: - return (void*)soap_instantiate_KMS_Discovery__DiscoverCluster(soap, -1, type, arrayType, n); -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header: - return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code: - return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail: - return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason: - return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault: - return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); -#endif - } - return NULL; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) -{ switch (p->type) - { - case SOAP_TYPE_KMS_Discovery_xsd__hexBinary: - if (p->size < 0) - SOAP_DELETE((struct xsd__hexBinary*)p->ptr); - else - SOAP_DELETE_ARRAY((struct xsd__hexBinary*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember: - if (p->size < 0) - SOAP_DELETE((struct KMS_Discovery_ClusterMember*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Discovery_ClusterMember*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers: - if (p->size < 0) - SOAP_DELETE((struct KMS_Discovery__ArrayOfClusterMembers*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Discovery__ArrayOfClusterMembers*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse: - if (p->size < 0) - SOAP_DELETE((struct KMS_Discovery__DiscoverClusterResponse*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Discovery__DiscoverClusterResponse*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster: - if (p->size < 0) - SOAP_DELETE((struct KMS_Discovery__DiscoverCluster*)p->ptr); - else - SOAP_DELETE_ARRAY((struct KMS_Discovery__DiscoverCluster*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); - break; - case SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); - break; - default: return SOAP_ERR; - } - return SOAP_OK; -} - -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) -{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_byte - *a = SOAP_DEFAULT_byte; -#else - *a = (char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) -{ - return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_byte); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) -{ char *p; - p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_byte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_byte); - if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) -{ - if ((p = soap_in_byte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_int - *a = SOAP_DEFAULT_int; -#else - *a = (int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) -{ - return soap_outint(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_int); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) -{ int *p; - p = soap_inint(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_int); - if (soap_out_int(soap, tag?tag:"int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) -{ - if ((p = soap_in_int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__int); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__int); - if (soap_out_xsd__int(soap, tag?tag:"xsd:int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap *soap, long *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_long - *a = SOAP_DEFAULT_long; -#else - *a = (long)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap *soap, const char *tag, int id, const long *a, const char *type) -{ - return soap_outlong(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_long); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap *soap, const char *tag, long *a, const char *type) -{ long *p; - p = soap_inlong(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap *soap, const long *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_long); - if (soap_out_long(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap *soap, long *p, const char *tag, const char *type) -{ - if ((p = soap_in_long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__long); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__long); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__long); - if (soap_out_xsd__long(soap, tag?tag:"xsd:long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__long(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap *soap, LONG64 *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_LONG64 - *a = SOAP_DEFAULT_LONG64; -#else - *a = (LONG64)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) -{ - return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_LONG64); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap *soap, const char *tag, LONG64 *a, const char *type) -{ LONG64 *p; - p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_LONG64); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap *soap, const LONG64 *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_LONG64); - if (soap_out_LONG64(soap, tag?tag:"long", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap *soap, LONG64 *p, const char *tag, const char *type) -{ - if ((p = soap_in_LONG64(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__float); - if (soap_out_xsd__float(soap, tag?tag:"xsd:float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap *soap, float *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_float - *a = SOAP_DEFAULT_float; -#else - *a = (float)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type) -{ - return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_float); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type) -{ float *p; - p = soap_infloat(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_float); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap *soap, const float *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_float); - if (soap_out_float(soap, tag?tag:"float", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type) -{ - if ((p = soap_in_float(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap *soap, unsigned char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedByte - *a = SOAP_DEFAULT_unsignedByte; -#else - *a = (unsigned char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) -{ - return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_unsignedByte); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) -{ unsigned char *p; - p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_unsignedByte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_unsignedByte); - if (soap_out_unsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap *soap, unsigned int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_unsignedInt - *a = SOAP_DEFAULT_unsignedInt; -#else - *a = (unsigned int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *a, const char *type) -{ - return soap_outunsignedInt(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_unsignedInt); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap *soap, const char *tag, unsigned int *a, const char *type) -{ unsigned int *p; - p = soap_inunsignedInt(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_unsignedInt); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap *soap, const unsigned int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_unsignedInt); - if (soap_out_unsignedInt(soap, tag?tag:"unsignedInt", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap *soap, unsigned int *p, const char *tag, const char *type) -{ - if ((p = soap_in_unsignedInt(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap *soap, bool n) -{ return soap_bool2s(soap, n); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_xsd__boolean), type) || soap_send(soap, soap_xsd__boolean2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap *soap, const char *s, bool *a) -{ - return soap_s2bool(soap, s, a); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_xsd__boolean, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2xsd__boolean(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_xsd__boolean, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__boolean); - if (soap_out_xsd__boolean(soap, tag?tag:"xsd:boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__boolean(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap *soap, bool *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_bool - *a = SOAP_DEFAULT_bool; -#else - *a = (bool)0; -#endif -} - -static const struct soap_code_map soap_codes_bool[] = -{ { (long)false, "false" }, - { (long)true, "true" }, - { 0, NULL } -}; - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap *soap, bool n) -{ - (void)soap; /* appease -Wall -Werror */ -return soap_code_str(soap_codes_bool, n!=0); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap *soap, const char *tag, int id, const bool *a, const char *type) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_bool), type) || soap_send(soap, soap_bool2s(soap, *a))) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap *soap, const char *s, bool *a) -{ - const struct soap_code_map *map; - if (!s) - return soap->error; - map = soap_code(soap_codes_bool, s); - if (map) - *a = (bool)(map->code != 0); - else - { long n; - if (soap_s2long(soap, s, &n) || n < 0 || n > 1) - return soap->error = SOAP_TYPE; - *a = (bool)(n != 0); - } - return SOAP_OK; -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap *soap, const char *tag, bool *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_bool, sizeof(bool), 0, NULL, NULL, NULL); - if (!a) - return NULL; - if (soap->body && !*soap->href) - { if (!a || soap_s2bool(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_bool, 0, sizeof(bool), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap *soap, const bool *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_bool); - if (soap_out_bool(soap, tag?tag:"boolean", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap *soap, bool *p, const char *tag, const char *type) -{ - if ((p = soap_in_bool(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->faultcode); - soap_default_string(soap, &a->faultstring); - soap_default_string(soap, &a->faultactor); - a->detail = NULL; - a->SOAP_ENV__Code = NULL; - a->SOAP_ENV__Reason = NULL; - soap_default_string(soap, &a->SOAP_ENV__Node); - soap_default_string(soap, &a->SOAP_ENV__Role); - a->SOAP_ENV__Detail = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->faultcode); - soap_serialize_string(soap, &a->faultstring); - soap_serialize_string(soap, &a->faultactor); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); - soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); - soap_serialize_string(soap, &a->SOAP_ENV__Node); - soap_serialize_string(soap, &a->SOAP_ENV__Role); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) -{ - const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault), type)) - return soap->error; - if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) - return soap->error; - if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "xsd:string")) - return soap->error; - if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "xsd:string")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) -{ - size_t soap_flag_faultcode = 1; - size_t soap_flag_faultstring = 1; - size_t soap_flag_faultactor = 1; - size_t soap_flag_detail = 1; - size_t soap_flag_SOAP_ENV__Code = 1; - size_t soap_flag_SOAP_ENV__Reason = 1; - size_t soap_flag_SOAP_ENV__Node = 1; - size_t soap_flag_SOAP_ENV__Role = 1; - size_t soap_flag_SOAP_ENV__Detail = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Fault(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) - { soap_flag_faultcode--; - continue; - } - if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) - { soap_flag_faultstring--; - continue; - } - if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) - { soap_flag_faultactor--; - continue; - } - if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) - { soap_flag_detail--; - continue; - } - if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) - { soap_flag_SOAP_ENV__Code--; - continue; - } - if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) - { soap_flag_SOAP_ENV__Reason--; - continue; - } - if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) - { soap_flag_SOAP_ENV__Node--; - continue; - } - if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) - { soap_flag_SOAP_ENV__Role--; - continue; - } - if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) - { soap_flag_SOAP_ENV__Detail--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault); - if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); - if (size) - *size = sizeof(struct SOAP_ENV__Fault); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Fault); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Fault*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); - *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason), type)) - return soap->error; - if (soap->lang) - soap_set_attr(soap, "xml:lang", soap->lang, 1); - if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Text = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Reason(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) - { soap_flag_SOAP_ENV__Text--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason); - if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); - if (size) - *size = sizeof(struct SOAP_ENV__Reason); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Reason); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Reason*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); - *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - a->__type = 0; - a->fault = NULL; - a->__any = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_markelement(soap, a->fault, a->__type); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail), type)) - return soap->error; - if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) - return soap->error; - soap_outliteral(soap, "-any", &a->__any, NULL); - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) -{ - size_t soap_flag_fault = 1; - size_t soap_flag___any = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Detail(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) - if ((a->fault = soap_getelement(soap, &a->__type))) - { soap_flag_fault = 0; - continue; - } - if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_inliteral(soap, "-any", &a->__any)) - { soap_flag___any--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail); - if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); - if (size) - *size = sizeof(struct SOAP_ENV__Detail); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Detail); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Detail*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); - *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->SOAP_ENV__Value); - a->SOAP_ENV__Subcode = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->SOAP_ENV__Value); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) -{ - const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code), type)) - return soap->error; - if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Value = 1; - size_t soap_flag_SOAP_ENV__Subcode = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Code(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) - { soap_flag_SOAP_ENV__Value--; - continue; - } - if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) - { soap_flag_SOAP_ENV__Subcode--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code); - if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); - if (size) - *size = sizeof(struct SOAP_ENV__Code); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Code); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Code*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); - *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header), type)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Header(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header); - if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); - if (size) - *size = sizeof(struct SOAP_ENV__Header); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Header); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Header*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); - *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery__DiscoverCluster(struct soap *soap, struct KMS_Discovery__DiscoverCluster *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - /* transient _ skipped */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery__DiscoverCluster(struct soap *soap, const struct KMS_Discovery__DiscoverCluster *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - /* transient _ skipped */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery__DiscoverCluster(struct soap *soap, const char *tag, int id, const struct KMS_Discovery__DiscoverCluster *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster), type)) - return soap->error; - /* transient _ skipped */ - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Discovery__DiscoverCluster * SOAP_FMAC4 soap_in_KMS_Discovery__DiscoverCluster(struct soap *soap, const char *tag, struct KMS_Discovery__DiscoverCluster *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Discovery__DiscoverCluster *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster, sizeof(struct KMS_Discovery__DiscoverCluster), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Discovery__DiscoverCluster(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - /* transient _ skipped */ - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Discovery__DiscoverCluster *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster, 0, sizeof(struct KMS_Discovery__DiscoverCluster), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery__DiscoverCluster(struct soap *soap, const struct KMS_Discovery__DiscoverCluster *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster); - if (soap_out_KMS_Discovery__DiscoverCluster(soap, tag?tag:"KMS-Discovery:DiscoverCluster", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Discovery__DiscoverCluster * SOAP_FMAC4 soap_get_KMS_Discovery__DiscoverCluster(struct soap *soap, struct KMS_Discovery__DiscoverCluster *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Discovery__DiscoverCluster(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Discovery__DiscoverCluster * SOAP_FMAC2 soap_instantiate_KMS_Discovery__DiscoverCluster(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Discovery__DiscoverCluster(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery__DiscoverCluster); - if (size) - *size = sizeof(struct KMS_Discovery__DiscoverCluster); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery__DiscoverCluster[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Discovery__DiscoverCluster); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Discovery__DiscoverCluster*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery__DiscoverCluster(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Discovery__DiscoverCluster %p -> %p\n", q, p)); - *(struct KMS_Discovery__DiscoverCluster*)p = *(struct KMS_Discovery__DiscoverCluster*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, struct KMS_Discovery__DiscoverClusterResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__string(soap, &a->EntitySiteID); - soap_default_KMS_Discovery__ArrayOfClusterMembers(soap, &a->ArrayOfClusterMembers); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, const struct KMS_Discovery__DiscoverClusterResponse *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->EntitySiteID); - soap_serialize_KMS_Discovery__ArrayOfClusterMembers(soap, &a->ArrayOfClusterMembers); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, const char *tag, int id, const struct KMS_Discovery__DiscoverClusterResponse *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse), type)) - return soap->error; - if (soap_out_xsd__string(soap, "EntitySiteID", -1, &a->EntitySiteID, "xsd:string")) - return soap->error; - if (soap_out_KMS_Discovery__ArrayOfClusterMembers(soap, "ArrayOfClusterMembers", -1, &a->ArrayOfClusterMembers, "KMS-Discovery:ArrayOfClusterMembers")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Discovery__DiscoverClusterResponse * SOAP_FMAC4 soap_in_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, const char *tag, struct KMS_Discovery__DiscoverClusterResponse *a, const char *type) -{ - size_t soap_flag_EntitySiteID = 1; - size_t soap_flag_ArrayOfClusterMembers = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Discovery__DiscoverClusterResponse *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse, sizeof(struct KMS_Discovery__DiscoverClusterResponse), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Discovery__DiscoverClusterResponse(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_EntitySiteID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "EntitySiteID", &a->EntitySiteID, "xsd:string")) - { soap_flag_EntitySiteID--; - continue; - } - if (soap_flag_ArrayOfClusterMembers && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_KMS_Discovery__ArrayOfClusterMembers(soap, "ArrayOfClusterMembers", &a->ArrayOfClusterMembers, "KMS-Discovery:ArrayOfClusterMembers")) - { soap_flag_ArrayOfClusterMembers--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Discovery__DiscoverClusterResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse, 0, sizeof(struct KMS_Discovery__DiscoverClusterResponse), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, const struct KMS_Discovery__DiscoverClusterResponse *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse); - if (soap_out_KMS_Discovery__DiscoverClusterResponse(soap, tag?tag:"KMS-Discovery:DiscoverClusterResponse", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Discovery__DiscoverClusterResponse * SOAP_FMAC4 soap_get_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, struct KMS_Discovery__DiscoverClusterResponse *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Discovery__DiscoverClusterResponse(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Discovery__DiscoverClusterResponse * SOAP_FMAC2 soap_instantiate_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Discovery__DiscoverClusterResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery__DiscoverClusterResponse); - if (size) - *size = sizeof(struct KMS_Discovery__DiscoverClusterResponse); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery__DiscoverClusterResponse[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Discovery__DiscoverClusterResponse); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Discovery__DiscoverClusterResponse*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery__DiscoverClusterResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Discovery__DiscoverClusterResponse %p -> %p\n", q, p)); - *(struct KMS_Discovery__DiscoverClusterResponse*)p = *(struct KMS_Discovery__DiscoverClusterResponse*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, struct KMS_Discovery__ArrayOfClusterMembers *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, struct KMS_Discovery__ArrayOfClusterMembers const*a) -{ - int i; - if (a->__ptr && !soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers)) - for (i = 0; i < a->__size; i++) - { soap_embedded(soap, a->__ptr + i, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember); - soap_serialize_KMS_Discovery_ClusterMember(soap, a->__ptr + i); - } -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, const char *tag, int id, const struct KMS_Discovery__ArrayOfClusterMembers *a, const char *type) -{ - int i, n = a->__size; - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - for (i = 0; i < n; i++) - { - soap_out_KMS_Discovery_ClusterMember(soap, "item", -1, &a->__ptr[i], "KMS-Discovery-ClusterMember"); - } - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Discovery__ArrayOfClusterMembers * SOAP_FMAC4 soap_in_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, const char *tag, struct KMS_Discovery__ArrayOfClusterMembers *a, const char *type) -{ int i, j; - struct KMS_Discovery_ClusterMember *p; - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_array(soap, "KMS-Discovery-ClusterMember") && soap_match_tag(soap, soap->type, type)) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct KMS_Discovery__ArrayOfClusterMembers *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers, sizeof(struct KMS_Discovery__ArrayOfClusterMembers), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Discovery__ArrayOfClusterMembers(soap, a); - if (soap->body && !*soap->href) - { - a->__size = soap_getsize(soap->arraySize, soap->arrayOffset, &j); - if (a->__size >= 0) - { a->__ptr = (struct KMS_Discovery_ClusterMember *)soap_malloc(soap, sizeof(struct KMS_Discovery_ClusterMember) * a->__size); - for (i = 0; i < a->__size; i++) - soap_default_KMS_Discovery_ClusterMember(soap, a->__ptr+i); - for (i = 0; i < a->__size; i++) - { soap_peek_element(soap); - if (soap->position) - { i = soap->positions[0]-j; - if (i < 0 || i >= a->__size) - { soap->error = SOAP_IOB; - return NULL; - } - } - if (!soap_in_KMS_Discovery_ClusterMember(soap, NULL, a->__ptr + i, "KMS-Discovery-ClusterMember")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - } - else - { if (soap_new_block(soap) == NULL) - return NULL; - for (a->__size = 0; ; a->__size++) - { p = (struct KMS_Discovery_ClusterMember *)soap_push_block(soap, NULL, sizeof(struct KMS_Discovery_ClusterMember)); - if (!p) - return NULL; - soap_default_KMS_Discovery_ClusterMember(soap, p); - if (!soap_in_KMS_Discovery_ClusterMember(soap, NULL, p, "KMS-Discovery-ClusterMember")) - { if (soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - break; - } - } - soap_pop_block(soap, NULL); - a->__ptr = (struct KMS_Discovery_ClusterMember *)soap_malloc(soap, soap->blist->size); - soap_save_block(soap, NULL, (char*)a->__ptr, 1); - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Discovery__ArrayOfClusterMembers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers, 0, sizeof(struct KMS_Discovery__ArrayOfClusterMembers), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, const struct KMS_Discovery__ArrayOfClusterMembers *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers); - if (soap_out_KMS_Discovery__ArrayOfClusterMembers(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Discovery__ArrayOfClusterMembers * SOAP_FMAC4 soap_get_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, struct KMS_Discovery__ArrayOfClusterMembers *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Discovery__ArrayOfClusterMembers(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Discovery__ArrayOfClusterMembers * SOAP_FMAC2 soap_instantiate_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Discovery__ArrayOfClusterMembers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery__ArrayOfClusterMembers); - if (size) - *size = sizeof(struct KMS_Discovery__ArrayOfClusterMembers); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery__ArrayOfClusterMembers[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Discovery__ArrayOfClusterMembers); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Discovery__ArrayOfClusterMembers*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery__ArrayOfClusterMembers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Discovery__ArrayOfClusterMembers %p -> %p\n", q, p)); - *(struct KMS_Discovery__ArrayOfClusterMembers*)p = *(struct KMS_Discovery__ArrayOfClusterMembers*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery_ClusterMember(struct soap *soap, struct KMS_Discovery_ClusterMember *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_xsd__long(soap, &a->KMAID); - soap_default_xsd__string(soap, &a->KMAName); - soap_default_xsd__string(soap, &a->KMASiteID); - soap_default_xsd__string(soap, &a->KMAHostName); - soap_default_xsd__string(soap, &a->KMANetworkAddress); - soap_default_xsd__boolean(soap, &a->Enabled); - soap_default_xsd__int(soap, &a->Load); - soap_default_xsd__boolean(soap, &a->Responding); - a->KMAVersion = (char *)""; - a->KMAHostNameIPv6 = (char *)""; - a->KMANetworkAddressIPv6 = (char *)""; - a->KMS_Discovery__Locked = (bool)0; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery_ClusterMember(struct soap *soap, const struct KMS_Discovery_ClusterMember *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_xsd__string(soap, &a->KMAName); - soap_serialize_xsd__string(soap, &a->KMASiteID); - soap_serialize_xsd__string(soap, &a->KMAHostName); - soap_serialize_xsd__string(soap, &a->KMANetworkAddress); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery_ClusterMember(struct soap *soap, const char *tag, int id, const struct KMS_Discovery_ClusterMember *a, const char *type) -{ - if (a->KMAVersion) - soap_set_attr(soap, "KMAVersion", a->KMAVersion, 1); - if (a->KMAHostNameIPv6) - soap_set_attr(soap, "KMAHostNameIPv6", a->KMAHostNameIPv6, 1); - if (a->KMANetworkAddressIPv6) - soap_set_attr(soap, "KMANetworkAddressIPv6", a->KMANetworkAddressIPv6, 1); - soap_set_attr(soap, "KMS-Discovery:Locked", soap_xsd__boolean2s(soap, a->KMS_Discovery__Locked), 1); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember), type)) - return soap->error; - if (soap_out_xsd__long(soap, "KMAID", -1, &a->KMAID, "xsd:long")) - return soap->error; - if (soap_out_xsd__string(soap, "KMAName", -1, &a->KMAName, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "KMASiteID", -1, &a->KMASiteID, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "KMAHostName", -1, &a->KMAHostName, "xsd:string")) - return soap->error; - if (soap_out_xsd__string(soap, "KMANetworkAddress", -1, &a->KMANetworkAddress, "xsd:string")) - return soap->error; - if (soap_out_xsd__boolean(soap, "Enabled", -1, &a->Enabled, "xsd:boolean")) - return soap->error; - if (soap_out_xsd__int(soap, "Load", -1, &a->Load, "xsd:int")) - return soap->error; - if (soap_out_xsd__boolean(soap, "Responding", -1, &a->Responding, "xsd:boolean")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct KMS_Discovery_ClusterMember * SOAP_FMAC4 soap_in_KMS_Discovery_ClusterMember(struct soap *soap, const char *tag, struct KMS_Discovery_ClusterMember *a, const char *type) -{ - size_t soap_flag_KMAID = 1; - size_t soap_flag_KMAName = 1; - size_t soap_flag_KMASiteID = 1; - size_t soap_flag_KMAHostName = 1; - size_t soap_flag_KMANetworkAddress = 1; - size_t soap_flag_Enabled = 1; - size_t soap_flag_Load = 1; - size_t soap_flag_Responding = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct KMS_Discovery_ClusterMember *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember, sizeof(struct KMS_Discovery_ClusterMember), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_KMS_Discovery_ClusterMember(soap, a); - if (soap_s2string(soap, soap_attr_value(soap, "KMAVersion", 0), &a->KMAVersion, -1, -1)) - return NULL; - if (soap_s2string(soap, soap_attr_value(soap, "KMAHostNameIPv6", 0), &a->KMAHostNameIPv6, -1, -1)) - return NULL; - if (soap_s2string(soap, soap_attr_value(soap, "KMANetworkAddressIPv6", 0), &a->KMANetworkAddressIPv6, -1, -1)) - return NULL; - if (soap_s2xsd__boolean(soap, soap_attr_value(soap, "KMS-Discovery:Locked", 0), &a->KMS_Discovery__Locked)) - return NULL; - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_KMAID && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__long(soap, "KMAID", &a->KMAID, "xsd:long")) - { soap_flag_KMAID--; - continue; - } - if (soap_flag_KMAName && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KMAName", &a->KMAName, "xsd:string")) - { soap_flag_KMAName--; - continue; - } - if (soap_flag_KMASiteID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KMASiteID", &a->KMASiteID, "xsd:string")) - { soap_flag_KMASiteID--; - continue; - } - if (soap_flag_KMAHostName && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KMAHostName", &a->KMAHostName, "xsd:string")) - { soap_flag_KMAHostName--; - continue; - } - if (soap_flag_KMANetworkAddress && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_xsd__string(soap, "KMANetworkAddress", &a->KMANetworkAddress, "xsd:string")) - { soap_flag_KMANetworkAddress--; - continue; - } - if (soap_flag_Enabled && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__boolean(soap, "Enabled", &a->Enabled, "xsd:boolean")) - { soap_flag_Enabled--; - continue; - } - if (soap_flag_Load && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__int(soap, "Load", &a->Load, "xsd:int")) - { soap_flag_Load--; - continue; - } - if (soap_flag_Responding && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_xsd__boolean(soap, "Responding", &a->Responding, "xsd:boolean")) - { soap_flag_Responding--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct KMS_Discovery_ClusterMember *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember, 0, sizeof(struct KMS_Discovery_ClusterMember), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_KMAID > 0 || soap_flag_Enabled > 0 || soap_flag_Load > 0 || soap_flag_Responding > 0)) - { soap->error = SOAP_OCCURS; - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery_ClusterMember(struct soap *soap, const struct KMS_Discovery_ClusterMember *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember); - if (soap_out_KMS_Discovery_ClusterMember(soap, tag?tag:"KMS-Discovery-ClusterMember", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Discovery_ClusterMember * SOAP_FMAC4 soap_get_KMS_Discovery_ClusterMember(struct soap *soap, struct KMS_Discovery_ClusterMember *p, const char *tag, const char *type) -{ - if ((p = soap_in_KMS_Discovery_ClusterMember(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct KMS_Discovery_ClusterMember * SOAP_FMAC2 soap_instantiate_KMS_Discovery_ClusterMember(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_KMS_Discovery_ClusterMember(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery_ClusterMember); - if (size) - *size = sizeof(struct KMS_Discovery_ClusterMember); - } - else - { cp->ptr = (void*)SOAP_NEW(struct KMS_Discovery_ClusterMember[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct KMS_Discovery_ClusterMember); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct KMS_Discovery_ClusterMember*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery_ClusterMember(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct KMS_Discovery_ClusterMember %p -> %p\n", q, p)); - *(struct KMS_Discovery_ClusterMember*)p = *(struct KMS_Discovery_ClusterMember*)q; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *a) -{ - (void)soap; /* appease -Wall -Werror */ - a->__size = 0; - a->__ptr = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary const*a) -{ - if (a->__ptr) - soap_array_reference(soap, a, (struct soap_array*)&a->__ptr, 1, SOAP_TYPE_KMS_Discovery_xsd__hexBinary); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap *soap, const char *tag, int id, const struct xsd__hexBinary *a, const char *type) -{ - id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_KMS_Discovery_xsd__hexBinary); - if (id < 0) - return soap->error; - if (soap_element_begin_out(soap, tag, id, type)) - return soap->error; - if (soap_puthex(soap, a->__ptr, a->__size)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap *soap, const char *tag, struct xsd__hexBinary *a, const char *type) -{ - (void)type; /* appease -Wall -Werror */ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":hexBinary")) - { soap->error = SOAP_TYPE; - return NULL; - } - a = (struct xsd__hexBinary *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_KMS_Discovery_xsd__hexBinary, sizeof(struct xsd__hexBinary), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_xsd__hexBinary(soap, a); - if (soap->body && !*soap->href) - { - a->__ptr = soap_gethex(soap, &a->__size); - if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct xsd__hexBinary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_KMS_Discovery_xsd__hexBinary, 0, sizeof(struct xsd__hexBinary), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap *soap, const struct xsd__hexBinary *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, (struct soap_array*)&a->__ptr, 1, tag, SOAP_TYPE_KMS_Discovery_xsd__hexBinary); - if (soap_out_xsd__hexBinary(soap, tag?tag:"SOAP-ENC:Array", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap *soap, struct xsd__hexBinary *p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__hexBinary(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__hexBinary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_KMS_Discovery_xsd__hexBinary, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary); - if (size) - *size = sizeof(struct xsd__hexBinary); - } - else - { cp->ptr = (void*)SOAP_NEW(struct xsd__hexBinary[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct xsd__hexBinary); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct xsd__hexBinary*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct xsd__hexBinary %p -> %p\n", q, p)); - *(struct xsd__hexBinary*)p = *(struct xsd__hexBinary*)q; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason)) - soap_serialize_SOAP_ENV__Reason(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Reason); - if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail)) - soap_serialize_SOAP_ENV__Detail(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Detail); - if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code)) - soap_serialize_SOAP_ENV__Code(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Code); - if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Discovery_ClusterMember(struct soap *soap, struct KMS_Discovery_ClusterMember *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember)) - soap_serialize_KMS_Discovery_ClusterMember(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Discovery_ClusterMember(struct soap *soap, const char *tag, int id, struct KMS_Discovery_ClusterMember *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember); - if (id < 0) - return soap->error; - return soap_out_KMS_Discovery_ClusterMember(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct KMS_Discovery_ClusterMember ** SOAP_FMAC4 soap_in_PointerToKMS_Discovery_ClusterMember(struct soap *soap, const char *tag, struct KMS_Discovery_ClusterMember **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct KMS_Discovery_ClusterMember **)soap_malloc(soap, sizeof(struct KMS_Discovery_ClusterMember *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_KMS_Discovery_ClusterMember(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct KMS_Discovery_ClusterMember **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember, sizeof(struct KMS_Discovery_ClusterMember), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Discovery_ClusterMember(struct soap *soap, struct KMS_Discovery_ClusterMember *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_PointerToKMS_Discovery_ClusterMember); - if (soap_out_PointerToKMS_Discovery_ClusterMember(soap, tag?tag:"KMS-Discovery-ClusterMember", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct KMS_Discovery_ClusterMember ** SOAP_FMAC4 soap_get_PointerToKMS_Discovery_ClusterMember(struct soap *soap, struct KMS_Discovery_ClusterMember **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToKMS_Discovery_ClusterMember(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap *soap, unsigned char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_Discovery_unsignedByte); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap *soap, const char *tag, int id, unsigned char *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_KMS_Discovery_unsignedByte); - if (id < 0) - return soap->error; - return soap_out_unsignedByte(soap, tag, id, *a, type); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap *soap, const char *tag, unsigned char **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (unsigned char **)soap_malloc(soap, sizeof(unsigned char *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_unsignedByte(soap, tag, *a, type))) - return NULL; - } - else - { a = (unsigned char **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_KMS_Discovery_unsignedByte, sizeof(unsigned char), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap *soap, unsigned char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_PointerTounsignedByte); - if (soap_out_PointerTounsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap *soap, unsigned char **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerTounsignedByte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__networkAddress(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__networkAddress); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__networkAddress(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__networkAddress, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__networkAddress(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__networkAddress); - if (soap_out_xsd__networkAddress(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__networkAddress(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__networkAddress(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__kmaVersion(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__kmaVersion); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__kmaVersion(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__kmaVersion, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__kmaVersion(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__kmaVersion); - if (soap_out_xsd__kmaVersion(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__kmaVersion(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__kmaVersion(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__duration); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__duration, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__duration); - if (soap_out_xsd__duration(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__duration(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__dateTime); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__dateTime, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__dateTime); - if (soap_out_xsd__dateTime(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__dateTime(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_xsd__string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_xsd__string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_xsd__string); - if (soap_out_xsd__string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_xsd__string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery__QName); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery__QName, 2, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery__QName); - if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in__QName(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_string - *a = SOAP_DEFAULT_string; -#else - *a = (char *)0; -#endif -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_KMS_Discovery_string); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_KMS_Discovery_string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_KMS_Discovery_string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_KMS_Discovery_string); - if (soap_out_string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -} // namespace KMS_Discovery - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_DiscoveryC.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryClient.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryClient.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_DiscoveryClient.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/DiscoveryService/KMS_Discovery_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif -#include "KMS_DiscoveryH.h" - -namespace KMS_Discovery { - -SOAP_SOURCE_STAMP("@(#) KMS_DiscoveryClient.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Discovery__DiscoverCluster(struct soap *soap, const char *soap_endpoint, const char *soap_action, void *_, struct KMS_Discovery__DiscoverClusterResponse &result) -{ struct KMS_Discovery__DiscoverCluster soap_tmp_KMS_Discovery__DiscoverCluster; - soap_tmp_KMS_Discovery__DiscoverCluster._ = _; - soap_begin(soap); - soap_serializeheader(soap); - soap_serialize_KMS_Discovery__DiscoverCluster(soap, &soap_tmp_KMS_Discovery__DiscoverCluster); - if (soap_begin_count(soap)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Discovery__DiscoverCluster(soap, &soap_tmp_KMS_Discovery__DiscoverCluster, "KMS-Discovery:DiscoverCluster", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap->error; - } - if (soap_end_count(soap)) - return soap->error; - if (soap_connect(soap, soap_endpoint, soap_action) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_put_KMS_Discovery__DiscoverCluster(soap, &soap_tmp_KMS_Discovery__DiscoverCluster, "KMS-Discovery:DiscoverCluster", NULL) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap) - || soap_end_send(soap)) - return soap_closesock(soap); - if (!&result) - return soap_closesock(soap); - soap_default_KMS_Discovery__DiscoverClusterResponse(soap, &result); - if (soap_begin_recv(soap) - || soap_envelope_begin_in(soap) - || soap_recv_header(soap) - || soap_body_begin_in(soap)) - return soap_closesock(soap); - if (soap_recv_fault(soap, 1)) - return soap->error; - soap_get_KMS_Discovery__DiscoverClusterResponse(soap, &result, "", ""); - if (soap->error) - return soap_recv_fault(soap, 0); - if (soap_body_end_in(soap) - || soap_envelope_end_in(soap) - || soap_end_recv(soap)) - return soap_closesock(soap); - return soap_closesock(soap); -} - -} // namespace KMS_Discovery - - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of KMS_DiscoveryClient.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryH.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryH.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,757 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_DiscoveryH.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/DiscoveryService/KMS_Discovery_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_DiscoveryH_H -#define KMS_DiscoveryH_H -#include "KMS_DiscoveryStub.h" - -namespace KMS_Discovery { -#ifndef WITH_NOIDREF -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); -SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_byte -#define SOAP_TYPE_KMS_Discovery_byte (3) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); - -#define soap_write_byte(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); - -#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_int -#define SOAP_TYPE_KMS_Discovery_int (1) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); - -#define soap_write_int(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); - -#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__int -#define SOAP_TYPE_KMS_Discovery_xsd__int (11) -#endif - -#define soap_default_xsd__int(soap, a) soap_default_long(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_xsd__int(struct soap*, const char*, long *, const char*); - -#define soap_write_xsd__int(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_xsd__int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__int(struct soap*, const long *, const char*, const char*); - -#define soap_read_xsd__int(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_xsd__int(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_long -#define SOAP_TYPE_KMS_Discovery_long (10) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_long(struct soap*, long *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_long(struct soap*, const char*, int, const long *, const char*); -SOAP_FMAC3 long * SOAP_FMAC4 soap_in_long(struct soap*, const char*, long *, const char*); - -#define soap_write_long(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_long(struct soap*, const long *, const char*, const char*); - -#define soap_read_long(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 long * SOAP_FMAC4 soap_get_long(struct soap*, long *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__long -#define SOAP_TYPE_KMS_Discovery_xsd__long (15) -#endif - -#define soap_default_xsd__long(soap, a) soap_default_LONG64(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_xsd__long(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_xsd__long(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_xsd__long(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__long(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_xsd__long(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__long(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_xsd__long(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_LONG64 -#define SOAP_TYPE_KMS_Discovery_LONG64 (14) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap*, LONG64 *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap*, const char*, int, const LONG64 *, const char*); -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap*, const char*, LONG64 *, const char*); - -#define soap_write_LONG64(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_LONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap*, const LONG64 *, const char*, const char*); - -#define soap_read_LONG64(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_LONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap*, LONG64 *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__float -#define SOAP_TYPE_KMS_Discovery_xsd__float (9) -#endif - -#define soap_default_xsd__float(soap, a) soap_default_float(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_xsd__float(struct soap*, const char*, float *, const char*); - -#define soap_write_xsd__float(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_xsd__float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__float(struct soap*, const float *, const char*, const char*); - -#define soap_read_xsd__float(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_xsd__float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_float -#define SOAP_TYPE_KMS_Discovery_float (8) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap*, float *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap*, const char*, int, const float *, const char*); -SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap*, const char*, float *, const char*); - -#define soap_write_float(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_float(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap*, const float *, const char*, const char*); - -#define soap_read_float(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_float(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap*, float *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_unsignedByte -#define SOAP_TYPE_KMS_Discovery_unsignedByte (22) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap*, unsigned char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap*, const char*, unsigned char *, const char*); - -#define soap_write_unsignedByte(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap*, const unsigned char *, const char*, const char*); - -#define soap_read_unsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap*, unsigned char *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_unsignedInt -#define SOAP_TYPE_KMS_Discovery_unsignedInt (21) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap*, unsigned int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap*, const char*, int, const unsigned int *, const char*); -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap*, const char*, unsigned int *, const char*); - -#define soap_write_unsignedInt(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_unsignedInt(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap*, const unsigned int *, const char*, const char*); - -#define soap_read_unsignedInt(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap*, unsigned int *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__boolean -#define SOAP_TYPE_KMS_Discovery_xsd__boolean (13) -#endif - -#define soap_default_xsd__boolean(soap, a) soap_default_bool(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_xsd__boolean2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_xsd__boolean(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2xsd__boolean(struct soap*, const char*, bool *); - -#define soap_write_xsd__boolean(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_xsd__boolean(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__boolean(struct soap*, const bool *, const char*, const char*); - -#define soap_read_xsd__boolean(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__boolean(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_xsd__boolean(struct soap*, bool *, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_bool -#define SOAP_TYPE_KMS_Discovery_bool (12) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap*, bool *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap*, const char*, int, const bool *, const char*); - -SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap*, bool); -SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap*, const char*, bool *, const char*); - -SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap*, const char*, bool *); - -#define soap_write_bool(soap, data) ( soap_begin_send(soap) || KMS_Discovery::soap_put_bool(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap*, const bool *, const char*, const char*); - -#define soap_read_bool(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_bool(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap*, bool *, const char*, const char*); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault (38) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); - -#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || KMS_Discovery::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason (37) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); - -#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || KMS_Discovery::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail (36) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); - -#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || KMS_Discovery::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code (34) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); - -#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_SOAP_ENV__Code(soap, data), 0) || KMS_Discovery::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header (33) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); - -#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_SOAP_ENV__Header(soap, data), 0) || KMS_Discovery::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster (32) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery__DiscoverCluster(struct soap*, struct KMS_Discovery__DiscoverCluster *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery__DiscoverCluster(struct soap*, const struct KMS_Discovery__DiscoverCluster *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery__DiscoverCluster(struct soap*, const char*, int, const struct KMS_Discovery__DiscoverCluster *, const char*); -SOAP_FMAC3 struct KMS_Discovery__DiscoverCluster * SOAP_FMAC4 soap_in_KMS_Discovery__DiscoverCluster(struct soap*, const char*, struct KMS_Discovery__DiscoverCluster *, const char*); - -#define soap_write_KMS_Discovery__DiscoverCluster(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_KMS_Discovery__DiscoverCluster(soap, data), 0) || KMS_Discovery::soap_put_KMS_Discovery__DiscoverCluster(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery__DiscoverCluster(struct soap*, const struct KMS_Discovery__DiscoverCluster *, const char*, const char*); - -#define soap_read_KMS_Discovery__DiscoverCluster(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_KMS_Discovery__DiscoverCluster(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Discovery__DiscoverCluster * SOAP_FMAC4 soap_get_KMS_Discovery__DiscoverCluster(struct soap*, struct KMS_Discovery__DiscoverCluster *, const char*, const char*); - -#define soap_new_KMS_Discovery__DiscoverCluster(soap, n) soap_instantiate_KMS_Discovery__DiscoverCluster(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Discovery__DiscoverCluster(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Discovery__DiscoverCluster * SOAP_FMAC2 soap_instantiate_KMS_Discovery__DiscoverCluster(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery__DiscoverCluster(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse (29) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery__DiscoverClusterResponse(struct soap*, struct KMS_Discovery__DiscoverClusterResponse *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery__DiscoverClusterResponse(struct soap*, const struct KMS_Discovery__DiscoverClusterResponse *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery__DiscoverClusterResponse(struct soap*, const char*, int, const struct KMS_Discovery__DiscoverClusterResponse *, const char*); -SOAP_FMAC3 struct KMS_Discovery__DiscoverClusterResponse * SOAP_FMAC4 soap_in_KMS_Discovery__DiscoverClusterResponse(struct soap*, const char*, struct KMS_Discovery__DiscoverClusterResponse *, const char*); - -#define soap_write_KMS_Discovery__DiscoverClusterResponse(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_KMS_Discovery__DiscoverClusterResponse(soap, data), 0) || KMS_Discovery::soap_put_KMS_Discovery__DiscoverClusterResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery__DiscoverClusterResponse(struct soap*, const struct KMS_Discovery__DiscoverClusterResponse *, const char*, const char*); - -#define soap_read_KMS_Discovery__DiscoverClusterResponse(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_KMS_Discovery__DiscoverClusterResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Discovery__DiscoverClusterResponse * SOAP_FMAC4 soap_get_KMS_Discovery__DiscoverClusterResponse(struct soap*, struct KMS_Discovery__DiscoverClusterResponse *, const char*, const char*); - -#define soap_new_KMS_Discovery__DiscoverClusterResponse(soap, n) soap_instantiate_KMS_Discovery__DiscoverClusterResponse(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Discovery__DiscoverClusterResponse(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Discovery__DiscoverClusterResponse * SOAP_FMAC2 soap_instantiate_KMS_Discovery__DiscoverClusterResponse(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery__DiscoverClusterResponse(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers (25) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery__ArrayOfClusterMembers(struct soap*, struct KMS_Discovery__ArrayOfClusterMembers *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery__ArrayOfClusterMembers(struct soap*, struct KMS_Discovery__ArrayOfClusterMembers const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery__ArrayOfClusterMembers(struct soap*, const char*, int, const struct KMS_Discovery__ArrayOfClusterMembers *, const char*); -SOAP_FMAC3 struct KMS_Discovery__ArrayOfClusterMembers * SOAP_FMAC4 soap_in_KMS_Discovery__ArrayOfClusterMembers(struct soap*, const char*, struct KMS_Discovery__ArrayOfClusterMembers *, const char*); - -#define soap_write_KMS_Discovery__ArrayOfClusterMembers(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_KMS_Discovery__ArrayOfClusterMembers(soap, data), 0) || KMS_Discovery::soap_put_KMS_Discovery__ArrayOfClusterMembers(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery__ArrayOfClusterMembers(struct soap*, const struct KMS_Discovery__ArrayOfClusterMembers *, const char*, const char*); - -#define soap_read_KMS_Discovery__ArrayOfClusterMembers(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_KMS_Discovery__ArrayOfClusterMembers(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Discovery__ArrayOfClusterMembers * SOAP_FMAC4 soap_get_KMS_Discovery__ArrayOfClusterMembers(struct soap*, struct KMS_Discovery__ArrayOfClusterMembers *, const char*, const char*); - -#define soap_new_KMS_Discovery__ArrayOfClusterMembers(soap, n) soap_instantiate_KMS_Discovery__ArrayOfClusterMembers(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Discovery__ArrayOfClusterMembers(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Discovery__ArrayOfClusterMembers * SOAP_FMAC2 soap_instantiate_KMS_Discovery__ArrayOfClusterMembers(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery__ArrayOfClusterMembers(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember (24) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_KMS_Discovery_ClusterMember(struct soap*, struct KMS_Discovery_ClusterMember *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_KMS_Discovery_ClusterMember(struct soap*, const struct KMS_Discovery_ClusterMember *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_KMS_Discovery_ClusterMember(struct soap*, const char*, int, const struct KMS_Discovery_ClusterMember *, const char*); -SOAP_FMAC3 struct KMS_Discovery_ClusterMember * SOAP_FMAC4 soap_in_KMS_Discovery_ClusterMember(struct soap*, const char*, struct KMS_Discovery_ClusterMember *, const char*); - -#define soap_write_KMS_Discovery_ClusterMember(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_KMS_Discovery_ClusterMember(soap, data), 0) || KMS_Discovery::soap_put_KMS_Discovery_ClusterMember(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_KMS_Discovery_ClusterMember(struct soap*, const struct KMS_Discovery_ClusterMember *, const char*, const char*); - -#define soap_read_KMS_Discovery_ClusterMember(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_KMS_Discovery_ClusterMember(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Discovery_ClusterMember * SOAP_FMAC4 soap_get_KMS_Discovery_ClusterMember(struct soap*, struct KMS_Discovery_ClusterMember *, const char*, const char*); - -#define soap_new_KMS_Discovery_ClusterMember(soap, n) soap_instantiate_KMS_Discovery_ClusterMember(soap, n, NULL, NULL, NULL) - - -#define soap_delete_KMS_Discovery_ClusterMember(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct KMS_Discovery_ClusterMember * SOAP_FMAC2 soap_instantiate_KMS_Discovery_ClusterMember(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_KMS_Discovery_ClusterMember(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__hexBinary -#define SOAP_TYPE_KMS_Discovery_xsd__hexBinary (20) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__hexBinary(struct soap*, struct xsd__hexBinary *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__hexBinary(struct soap*, struct xsd__hexBinary const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__hexBinary(struct soap*, const char*, int, const struct xsd__hexBinary *, const char*); -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_in_xsd__hexBinary(struct soap*, const char*, struct xsd__hexBinary *, const char*); - -#define soap_write_xsd__hexBinary(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_xsd__hexBinary(soap, data), 0) || KMS_Discovery::soap_put_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__hexBinary(struct soap*, const struct xsd__hexBinary *, const char*, const char*); - -#define soap_read_xsd__hexBinary(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__hexBinary(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct xsd__hexBinary * SOAP_FMAC4 soap_get_xsd__hexBinary(struct soap*, struct xsd__hexBinary *, const char*, const char*); - -#define soap_new_xsd__hexBinary(soap, n) soap_instantiate_xsd__hexBinary(soap, n, NULL, NULL, NULL) - - -#define soap_delete_xsd__hexBinary(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct xsd__hexBinary * SOAP_FMAC2 soap_instantiate_xsd__hexBinary(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__hexBinary(struct soap*, int, int, void*, size_t, const void*, size_t); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Reason -#define SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Reason (40) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); - -#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || KMS_Discovery::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Detail -#define SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Detail (39) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); - -#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || KMS_Discovery::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Code -#define SOAP_TYPE_KMS_Discovery_PointerToSOAP_ENV__Code (35) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); - -#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || KMS_Discovery::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); - -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_PointerToKMS_Discovery_ClusterMember -#define SOAP_TYPE_KMS_Discovery_PointerToKMS_Discovery_ClusterMember (26) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToKMS_Discovery_ClusterMember(struct soap*, struct KMS_Discovery_ClusterMember *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToKMS_Discovery_ClusterMember(struct soap*, const char *, int, struct KMS_Discovery_ClusterMember *const*, const char *); -SOAP_FMAC3 struct KMS_Discovery_ClusterMember ** SOAP_FMAC4 soap_in_PointerToKMS_Discovery_ClusterMember(struct soap*, const char*, struct KMS_Discovery_ClusterMember **, const char*); - -#define soap_write_PointerToKMS_Discovery_ClusterMember(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_PointerToKMS_Discovery_ClusterMember(soap, data), 0) || KMS_Discovery::soap_put_PointerToKMS_Discovery_ClusterMember(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToKMS_Discovery_ClusterMember(struct soap*, struct KMS_Discovery_ClusterMember *const*, const char*, const char*); - -#define soap_read_PointerToKMS_Discovery_ClusterMember(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_PointerToKMS_Discovery_ClusterMember(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct KMS_Discovery_ClusterMember ** SOAP_FMAC4 soap_get_PointerToKMS_Discovery_ClusterMember(struct soap*, struct KMS_Discovery_ClusterMember **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_PointerTounsignedByte -#define SOAP_TYPE_KMS_Discovery_PointerTounsignedByte (23) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap*, unsigned char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap*, const char *, int, unsigned char *const*, const char *); -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap*, const char*, unsigned char **, const char*); - -#define soap_write_PointerTounsignedByte(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_PointerTounsignedByte(soap, data), 0) || KMS_Discovery::soap_put_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap*, unsigned char *const*, const char*, const char*); - -#define soap_read_PointerTounsignedByte(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap*, unsigned char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__networkAddress -#define SOAP_TYPE_KMS_Discovery_xsd__networkAddress (19) -#endif - -#define soap_default_xsd__networkAddress(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__networkAddress(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__networkAddress(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__networkAddress(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__networkAddress(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_xsd__networkAddress(soap, data), 0) || KMS_Discovery::soap_put_xsd__networkAddress(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__networkAddress(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__networkAddress(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__networkAddress(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__networkAddress(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__kmaVersion -#define SOAP_TYPE_KMS_Discovery_xsd__kmaVersion (18) -#endif - -#define soap_default_xsd__kmaVersion(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__kmaVersion(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__kmaVersion(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__kmaVersion(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__kmaVersion(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_xsd__kmaVersion(soap, data), 0) || KMS_Discovery::soap_put_xsd__kmaVersion(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__kmaVersion(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__kmaVersion(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__kmaVersion(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__kmaVersion(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__duration -#define SOAP_TYPE_KMS_Discovery_xsd__duration (17) -#endif - -#define soap_default_xsd__duration(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__duration(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__duration(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__duration(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_xsd__duration(soap, data), 0) || KMS_Discovery::soap_put_xsd__duration(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__duration(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__duration(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__dateTime -#define SOAP_TYPE_KMS_Discovery_xsd__dateTime (16) -#endif - -#define soap_default_xsd__dateTime(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__dateTime(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__dateTime(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_xsd__dateTime(soap, data), 0) || KMS_Discovery::soap_put_xsd__dateTime(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__dateTime(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__dateTime(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__dateTime(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__dateTime(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__string -#define SOAP_TYPE_KMS_Discovery_xsd__string (7) -#endif - -#define soap_default_xsd__string(soap, a) soap_default_string(soap, a) - - -#define soap_serialize_xsd__string(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__string(struct soap*, const char*, char **, const char*); - -#define soap_write_xsd__string(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_xsd__string(soap, data), 0) || KMS_Discovery::soap_put_xsd__string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_xsd__string(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_xsd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__string(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery__QName -#define SOAP_TYPE_KMS_Discovery__QName (5) -#endif - -#define soap_default__QName(soap, a) soap_default_string(soap, a) - - -#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); - -#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize__QName(soap, data), 0) || KMS_Discovery::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); - -#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_KMS_Discovery_string -#define SOAP_TYPE_KMS_Discovery_string (4) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); - -#define soap_write_string(soap, data) ( soap_begin_send(soap) || (KMS_Discovery::soap_serialize_string(soap, data), 0) || KMS_Discovery::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !KMS_Discovery::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); - -} // namespace KMS_Discovery - - -#endif - -/* End of KMS_DiscoveryH.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryStub.h --- a/usr/src/lib/libkmsagent/common/SOAP/KMS_DiscoveryStub.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,301 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* KMS_DiscoveryStub.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/DiscoveryService/KMS_Discovery_SOAP.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef KMS_DiscoveryStub_H -#define KMS_DiscoveryStub_H -#ifndef WITH_NONAMESPACES -#define WITH_NONAMESPACES -#endif -#ifndef WITH_NOGLOBAL -#define WITH_NOGLOBAL -#endif -#include "stdsoap2.h" - -namespace KMS_Discovery { - -/******************************************************************************\ - * * - * Enumerations * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Types with Custom Serializers * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Classes and Structs * - * * -\******************************************************************************/ - - -#if 0 /* volatile type: do not declare here, declared elsewhere */ - -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__hexBinary -#define SOAP_TYPE_KMS_Discovery_xsd__hexBinary (20) -/* hexBinary schema type: */ -struct xsd__hexBinary -{ -public: - unsigned char *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery_ClusterMember (24) -/* KMS-Discovery-ClusterMember */ -struct KMS_Discovery_ClusterMember -{ -public: - LONG64 KMAID; /* required element of type xsd:long */ - char *KMAName; /* optional element of type xsd:string */ - char *KMASiteID; /* optional element of type xsd:string */ - char *KMAHostName; /* optional element of type xsd:string */ - char *KMANetworkAddress; /* optional element of type xsd:string */ - bool Enabled; /* required element of type xsd:boolean */ - long Load; /* required element of type xsd:int */ - bool Responding; /* required element of type xsd:boolean */ - char *KMAVersion; /* optional attribute of type xsd:kmaVersion */ - char *KMAHostNameIPv6; /* optional attribute of type xsd:networkAddress */ - char *KMANetworkAddressIPv6; /* optional attribute of type xsd:networkAddress */ - bool KMS_Discovery__Locked; /* optional attribute of type xsd:boolean */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery__ArrayOfClusterMembers (25) -/* Sequence of KMS-Discovery:ArrayOfClusterMembers schema type: */ -struct KMS_Discovery__ArrayOfClusterMembers -{ -public: - struct KMS_Discovery_ClusterMember *__ptr; - int __size; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverClusterResponse (29) -/* KMS-Discovery:DiscoverClusterResponse */ -struct KMS_Discovery__DiscoverClusterResponse -{ -public: - char *EntitySiteID; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ - struct KMS_Discovery__ArrayOfClusterMembers ArrayOfClusterMembers; /* optional element of type KMS-Discovery:ArrayOfClusterMembers */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster -#define SOAP_TYPE_KMS_Discovery_KMS_Discovery__DiscoverCluster (32) -/* KMS-Discovery:DiscoverCluster */ -struct KMS_Discovery__DiscoverCluster -{ -public: - void *_; /* transient */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Header (33) -/* SOAP Header: */ -struct SOAP_ENV__Header -{ -#ifdef WITH_NOEMPTYSTRUCT -private: - char dummy; /* dummy member to enable compilation */ -#endif -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Code (34) -/* SOAP Fault Code: */ -struct SOAP_ENV__Code -{ -public: - char *SOAP_ENV__Value; /* optional element of type xsd:QName */ - struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Detail (36) -/* SOAP-ENV:Detail */ -struct SOAP_ENV__Detail -{ -public: - int __type; /* any type of element (defined below) */ - void *fault; /* transient */ - char *__any; -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Reason (37) -/* SOAP-ENV:Reason */ -struct SOAP_ENV__Reason -{ -public: - char *SOAP_ENV__Text; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault -#define SOAP_TYPE_KMS_Discovery_SOAP_ENV__Fault (38) -/* SOAP Fault: */ -struct SOAP_ENV__Fault -{ -public: - char *faultcode; /* optional element of type xsd:QName */ - char *faultstring; /* optional element of type xsd:string */ - char *faultactor; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ - struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ - struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ - char *SOAP_ENV__Node; /* optional element of type xsd:string */ - char *SOAP_ENV__Role; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ -}; -#endif - -/******************************************************************************\ - * * - * Typedefs * - * * -\******************************************************************************/ - -#ifndef SOAP_TYPE_KMS_Discovery__QName -#define SOAP_TYPE_KMS_Discovery__QName (5) -typedef char *_QName; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery__XML -#define SOAP_TYPE_KMS_Discovery__XML (6) -typedef char *_XML; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__string -#define SOAP_TYPE_KMS_Discovery_xsd__string (7) -typedef char *xsd__string; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__float -#define SOAP_TYPE_KMS_Discovery_xsd__float (9) -typedef float xsd__float; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__int -#define SOAP_TYPE_KMS_Discovery_xsd__int (11) -typedef long xsd__int; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__boolean -#define SOAP_TYPE_KMS_Discovery_xsd__boolean (13) -typedef bool xsd__boolean; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__long -#define SOAP_TYPE_KMS_Discovery_xsd__long (15) -typedef LONG64 xsd__long; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__dateTime -#define SOAP_TYPE_KMS_Discovery_xsd__dateTime (16) -typedef char *xsd__dateTime; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__duration -#define SOAP_TYPE_KMS_Discovery_xsd__duration (17) -typedef char *xsd__duration; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__kmaVersion -#define SOAP_TYPE_KMS_Discovery_xsd__kmaVersion (18) -typedef char *xsd__kmaVersion; -#endif - -#ifndef SOAP_TYPE_KMS_Discovery_xsd__networkAddress -#define SOAP_TYPE_KMS_Discovery_xsd__networkAddress (19) -typedef char *xsd__networkAddress; -#endif - - -/******************************************************************************\ - * * - * Externals * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Server-Side Operations * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Discovery__DiscoverCluster(struct soap*, void *_, struct KMS_Discovery__DiscoverClusterResponse &result); - -/******************************************************************************\ - * * - * Server-Side Skeletons to Invoke Service Operations * - * * -\******************************************************************************/ - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Discovery_serve(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 KMS_Discovery_serve_request(struct soap*); - -SOAP_FMAC5 int SOAP_FMAC6 soap_serve_KMS_Discovery__DiscoverCluster(struct soap*); - -/******************************************************************************\ - * * - * Client-Side Call Stubs * - * * -\******************************************************************************/ - - -SOAP_FMAC5 int SOAP_FMAC6 soap_call_KMS_Discovery__DiscoverCluster(struct soap *soap, const char *soap_endpoint, const char *soap_action, void *_, struct KMS_Discovery__DiscoverClusterResponse &result); - -} // namespace KMS_Discovery - - -#endif - -/* End of KMS_DiscoveryStub.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/envC.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/envC.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1359 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* envC.cpp - Generated by gSOAP 2.7.17 from ../gsoapStubs/Env/env.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#if defined(__BORLANDC__) -#pragma option push -w-8060 -#pragma option push -w-8004 -#endif - -#include "envH.h" - -SOAP_SOURCE_STAMP("@(#) envC.cpp ver 2.7.17 2010-06-08 19:16:38 GMT") - - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) -{ - if (soap->header) - soap_serialize_SOAP_ENV__Header(soap, soap->header); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) -{ - if (soap->header) - { soap->part = SOAP_IN_HEADER; - if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) - return soap->error; - soap->part = SOAP_END_HEADER; - } - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) -{ - soap->part = SOAP_IN_HEADER; - soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); - soap->part = SOAP_END_HEADER; - return soap->header == NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) -{ - if (!soap->header) - { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) - soap_default_SOAP_ENV__Header(soap, soap->header); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) -{ - if (!soap->fault) - { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); - if (!soap->fault) - return; - soap_default_SOAP_ENV__Fault(soap, soap->fault); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) - { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); - } - if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) - { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); - soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); - } -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) -{ - soap_fault(soap); - if (soap->fault) - soap_serialize_SOAP_ENV__Fault(soap, soap->fault); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) -{ - if (soap->fault) - return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); - return SOAP_OK; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) -{ - return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) - { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); - soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); - } - return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; - } - return (const char**)&soap->fault->faultcode; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 2) - return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; - return (const char**)&soap->fault->faultstring; -} - -SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) -{ - soap_fault(soap); - if (soap->version == 1) - { if (!soap->fault->detail) - { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); - soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); - } - return (const char**)&soap->fault->detail->__any; - } - if (!soap->fault->SOAP_ENV__Detail) - { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); - soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); - } - return (const char**)&soap->fault->SOAP_ENV__Detail->__any; -} - -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) -{ - int t; - if (soap->version == 1) - { for (;;) - { if (!soap_getelement(soap, &t)) - if (soap->error || soap_ignore_element(soap)) - break; - } - } - if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) - soap->error = SOAP_OK; - return soap->error; -} -#endif - -#ifndef WITH_NOIDREF - -#ifdef __cplusplus -extern "C" { -#endif -SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) -{ - if (soap_peek_element(soap)) - return NULL; - if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) - *type = soap_lookup_type(soap, soap->href); - switch (*type) - { - case SOAP_TYPE_byte: - return soap_in_byte(soap, NULL, NULL, "xsd:byte"); - case SOAP_TYPE_int: - return soap_in_int(soap, NULL, NULL, "xsd:int"); - case SOAP_TYPE__QName: - { char **s; - s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); - return s ? *s : NULL; - } - case SOAP_TYPE_string: - { char **s; - s = soap_in_string(soap, NULL, NULL, "xsd:string"); - return s ? *s : NULL; - } - default: - { const char *t = soap->type; - if (!*t) - t = soap->tag; - if (!soap_match_tag(soap, t, "xsd:byte")) - { *type = SOAP_TYPE_byte; - return soap_in_byte(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:int")) - { *type = SOAP_TYPE_int; - return soap_in_int(soap, NULL, NULL, NULL); - } - if (!soap_match_tag(soap, t, "xsd:QName")) - { char **s; - *type = SOAP_TYPE__QName; - s = soap_in__QName(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - if (!soap_match_tag(soap, t, "xsd:string")) - { char **s; - *type = SOAP_TYPE_string; - s = soap_in_string(soap, NULL, NULL, NULL); - return s ? *s : NULL; - } - t = soap->tag; - } - } - soap->error = SOAP_TAG_MISMATCH; - return NULL; -} - -#ifdef __cplusplus -} -#endif -#endif - -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) -{ - if (!soap_peek_element(soap)) - { int t; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); - if (soap->mustUnderstand && !soap->other) - return soap->error = SOAP_MUSTUNDERSTAND; - if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); - return soap->error = SOAP_TAG_MISMATCH; - } - if (!*soap->id || !soap_getelement(soap, &t)) - { soap->peeked = 0; - if (soap->fignore) - soap->error = soap->fignore(soap, soap->tag); - else - soap->error = SOAP_OK; - DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); - if (!soap->error && soap->body) - { soap->level++; - while (!soap_ignore_element(soap)) - ; - if (soap->error == SOAP_NO_TAG) - soap->error = soap_element_end_in(soap, NULL); - } - } - } - return soap->error; -} - -#ifndef WITH_NOIDREF -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) -{ - int i; - struct soap_plist *pp; - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) - for (i = 0; i < SOAP_PTRHASH; i++) - for (pp = soap->pht[i]; pp; pp = pp->next) - if (pp->mark1 == 2 || pp->mark2 == 2) - if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) - return soap->error; - return SOAP_OK; -} -#endif - -#ifndef WITH_NOIDREF - -#ifdef __cplusplus -extern "C" { -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) -{ - switch (type) - { - case SOAP_TYPE_byte: - return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); - case SOAP_TYPE_int: - return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); - case SOAP_TYPE__QName: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); - case SOAP_TYPE_string: - return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); - } - return SOAP_OK; -} - -#ifdef __cplusplus -} -#endif -#endif - -#ifndef WITH_NOIDREF - -#ifdef __cplusplus -extern "C" { -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) -{ - (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ - switch (type) - { - case SOAP_TYPE__QName: - soap_serialize_string(soap, (char*const*)&ptr); - break; - case SOAP_TYPE_string: - soap_serialize_string(soap, (char*const*)&ptr); - break; - } -} - -#ifdef __cplusplus -} -#endif -#endif - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) -{ - switch (t) - { -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_SOAP_ENV__Header: - return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_SOAP_ENV__Code: - return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_SOAP_ENV__Detail: - return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_SOAP_ENV__Reason: - return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); -#endif -#ifndef WITH_NOGLOBAL - case SOAP_TYPE_SOAP_ENV__Fault: - return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); -#endif - } - return NULL; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) -{ switch (p->type) - { - case SOAP_TYPE_SOAP_ENV__Header: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); - break; - case SOAP_TYPE_SOAP_ENV__Code: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); - break; - case SOAP_TYPE_SOAP_ENV__Detail: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); - break; - case SOAP_TYPE_SOAP_ENV__Reason: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); - break; - case SOAP_TYPE_SOAP_ENV__Fault: - if (p->size < 0) - SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); - else - SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); - break; - default: return SOAP_ERR; - } - return SOAP_OK; -} - -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) -{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_byte - *a = SOAP_DEFAULT_byte; -#else - *a = (char)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) -{ - return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_byte); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) -{ char *p; - p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_byte); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_byte); - if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) -{ - if ((p = soap_in_byte(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_int - *a = SOAP_DEFAULT_int; -#else - *a = (int)0; -#endif -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) -{ - return soap_outint(soap, tag, id, a, type, SOAP_TYPE_int); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) -{ int *p; - p = soap_inint(soap, tag, a, type, SOAP_TYPE_int); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_int); - if (soap_out_int(soap, tag?tag:"int", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) -{ - if ((p = soap_in_int(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->faultcode); - soap_default_string(soap, &a->faultstring); - soap_default_string(soap, &a->faultactor); - a->detail = NULL; - a->SOAP_ENV__Code = NULL; - a->SOAP_ENV__Reason = NULL; - soap_default_string(soap, &a->SOAP_ENV__Node); - soap_default_string(soap, &a->SOAP_ENV__Role); - a->SOAP_ENV__Detail = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->faultcode); - soap_serialize_string(soap, &a->faultstring); - soap_serialize_string(soap, &a->faultactor); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); - soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); - soap_serialize_string(soap, &a->SOAP_ENV__Node); - soap_serialize_string(soap, &a->SOAP_ENV__Role); - soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) -{ - const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Fault), type)) - return soap->error; - if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) - return soap->error; - if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "")) - return soap->error; - if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) - return soap->error; - if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) -{ - size_t soap_flag_faultcode = 1; - size_t soap_flag_faultstring = 1; - size_t soap_flag_faultactor = 1; - size_t soap_flag_detail = 1; - size_t soap_flag_SOAP_ENV__Code = 1; - size_t soap_flag_SOAP_ENV__Reason = 1; - size_t soap_flag_SOAP_ENV__Node = 1; - size_t soap_flag_SOAP_ENV__Role = 1; - size_t soap_flag_SOAP_ENV__Detail = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Fault(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) - { soap_flag_faultcode--; - continue; - } - if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) - { soap_flag_faultstring--; - continue; - } - if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) - { soap_flag_faultactor--; - continue; - } - if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) - { soap_flag_detail--; - continue; - } - if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) - { soap_flag_SOAP_ENV__Code--; - continue; - } - if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) - { soap_flag_SOAP_ENV__Reason--; - continue; - } - if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) - { soap_flag_SOAP_ENV__Node--; - continue; - } - if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) - { soap_flag_SOAP_ENV__Role--; - continue; - } - if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) - { soap_flag_SOAP_ENV__Detail--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Fault); - if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Fault, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); - if (size) - *size = sizeof(struct SOAP_ENV__Fault); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Fault); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Fault*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); - *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize_string(soap, &a->SOAP_ENV__Text); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Reason), type)) - return soap->error; - if (soap->lang) - soap_set_attr(soap, "xml:lang", soap->lang, 1); - if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Text = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Reason(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) - { soap_flag_SOAP_ENV__Text--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Reason); - if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Reason, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); - if (size) - *size = sizeof(struct SOAP_ENV__Reason); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Reason); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Reason*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); - *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - a->__type = 0; - a->fault = NULL; - a->__any = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_markelement(soap, a->fault, a->__type); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Detail), type)) - return soap->error; - if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) - return soap->error; - soap_outliteral(soap, "-any", &a->__any, NULL); - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) -{ - size_t soap_flag_fault = 1; - size_t soap_flag___any = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Detail(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) - if ((a->fault = soap_getelement(soap, &a->__type))) - { soap_flag_fault = 0; - continue; - } - if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_inliteral(soap, "-any", &a->__any)) - { soap_flag___any--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Detail); - if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Detail, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); - if (size) - *size = sizeof(struct SOAP_ENV__Detail); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Detail); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Detail*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); - *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_default__QName(soap, &a->SOAP_ENV__Value); - a->SOAP_ENV__Subcode = NULL; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ - soap_serialize__QName(soap, &a->SOAP_ENV__Value); - soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) -{ - const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Code), type)) - return soap->error; - if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) - return soap->error; - if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) -{ - size_t soap_flag_SOAP_ENV__Value = 1; - size_t soap_flag_SOAP_ENV__Subcode = 1; - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Code(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) - if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) - { soap_flag_SOAP_ENV__Value--; - continue; - } - if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) - if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) - { soap_flag_SOAP_ENV__Subcode--; - continue; - } - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Code); - if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Code, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); - if (size) - *size = sizeof(struct SOAP_ENV__Code); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Code); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Code*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); - *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) -{ - (void)soap; (void)a; /* appease -Wall -Werror */ -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type)) - return soap->error; - return soap_element_end_out(soap, tag); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 0, type)) - return NULL; - a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); - if (!a) - return NULL; - soap_default_SOAP_ENV__Header(soap, a); - if (soap->body && !*soap->href) - { - for (;;) - { soap->error = SOAP_TAG_MISMATCH; - if (soap->error == SOAP_TAG_MISMATCH) - soap->error = soap_ignore_element(soap); - if (soap->error == SOAP_NO_TAG) - break; - if (soap->error) - return NULL; - } - if (soap_element_end_in(soap, tag)) - return NULL; - } - else - { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Header); - if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) -{ - if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) -{ - (void)type; (void)arrayType; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); - struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Header, n, soap_fdelete); - if (!cp) - return NULL; - if (n < 0) - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); - if (size) - *size = sizeof(struct SOAP_ENV__Header); - } - else - { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); - if (!cp->ptr) - { soap->error = SOAP_EOM; - return NULL; - } - if (size) - *size = n * sizeof(struct SOAP_ENV__Header); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); - return (struct SOAP_ENV__Header*)cp->ptr; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ - (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); - *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Reason)) - soap_serialize_SOAP_ENV__Reason(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Reason); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_PointerToSOAP_ENV__Reason); - if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Detail)) - soap_serialize_SOAP_ENV__Detail(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Detail); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_PointerToSOAP_ENV__Detail); - if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -#ifndef WITH_NOGLOBAL - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) -{ - if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Code)) - soap_serialize_SOAP_ENV__Code(soap, *a); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) -{ - id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Code); - if (id < 0) - return soap->error; - return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) -{ - if (soap_element_begin_in(soap, tag, 1, NULL)) - return NULL; - if (!a) - if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) - return NULL; - *a = NULL; - if (!soap->null && *soap->href != '#') - { soap_revert(soap); - if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) - return NULL; - } - else - { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - } - return a; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_PointerToSOAP_ENV__Code); - if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) -{ - if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#endif - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE__QName); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE__QName, 2, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE__QName); - if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in__QName(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) -{ - (void)soap; /* appease -Wall -Werror */ -#ifdef SOAP_DEFAULT_string - *a = SOAP_DEFAULT_string; -#else - *a = (char *)0; -#endif -} - -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) -{ - soap_reference(soap, *a, SOAP_TYPE_string); -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) -{ - return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_string); -} - -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) -{ char **p; - p = soap_instring(soap, tag, a, type, SOAP_TYPE_string, 1, -1, -1); - return p; -} - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) -{ - register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_string); - if (soap_out_string(soap, tag?tag:"byte", id, a, type)) - return soap->error; - return soap_putindependent(soap); -} - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) -{ - if ((p = soap_in_string(soap, tag, p, type))) - if (soap_getindependent(soap)) - return NULL; - return p; -} - -#if defined(__BORLANDC__) -#pragma option pop -#pragma option pop -#endif - -/* End of envC.cpp */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/envH.h --- a/usr/src/lib/libkmsagent/common/SOAP/envH.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,329 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* envH.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/Env/env.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef envH_H -#define envH_H -#include "envStub.h" -#ifndef WITH_NOIDREF - -#ifdef __cplusplus -extern "C" { -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); -SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); -SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); - -#ifdef __cplusplus -} -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); -SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); -#endif -SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); - -SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); -SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); - -#ifndef SOAP_TYPE_byte -#define SOAP_TYPE_byte (3) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); -SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); - -#define soap_write_byte(soap, data) ( soap_begin_send(soap) || soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); - -#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); - -#ifndef SOAP_TYPE_int -#define SOAP_TYPE_int (1) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); -SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); - -#define soap_write_int(soap, data) ( soap_begin_send(soap) || soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); - -#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_SOAP_ENV__Fault -#define SOAP_TYPE_SOAP_ENV__Fault (14) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); - -#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Fault(soap, data), 0) || soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); - -#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_SOAP_ENV__Reason -#define SOAP_TYPE_SOAP_ENV__Reason (13) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); - -#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Reason(soap, data), 0) || soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); - -#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_SOAP_ENV__Detail -#define SOAP_TYPE_SOAP_ENV__Detail (10) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); - -#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Detail(soap, data), 0) || soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); - -#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_SOAP_ENV__Code -#define SOAP_TYPE_SOAP_ENV__Code (8) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); - -#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Code(soap, data), 0) || soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); - -#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_SOAP_ENV__Header -#define SOAP_TYPE_SOAP_ENV__Header (7) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); - -#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Header(soap, data), 0) || soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) - - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); - -#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) - - -#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) - -SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); -SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_PointerToSOAP_ENV__Reason -#define SOAP_TYPE_PointerToSOAP_ENV__Reason (16) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); - -#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail -#define SOAP_TYPE_PointerToSOAP_ENV__Detail (15) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); - -#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); - -#endif - -#ifndef WITH_NOGLOBAL - -#ifndef SOAP_TYPE_PointerToSOAP_ENV__Code -#define SOAP_TYPE_PointerToSOAP_ENV__Code (9) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); - -#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); - -#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); - -#endif - -#ifndef SOAP_TYPE__QName -#define SOAP_TYPE__QName (5) -#endif - -#define soap_default__QName(soap, a) soap_default_string(soap, a) - - -#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) - -SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); - -#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (soap_serialize__QName(soap, data), 0) || soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); - -#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); - -#ifndef SOAP_TYPE_string -#define SOAP_TYPE_string (4) -#endif -SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); -SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); -SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); -SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); - -#define soap_write_string(soap, data) ( soap_begin_send(soap) || (soap_serialize_string(soap, data), 0) || soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) - -SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); - -#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) - -SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); - -#endif - -/* End of envH.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/envStub.h --- a/usr/src/lib/libkmsagent/common/SOAP/envStub.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* envStub.h - Generated by gSOAP 2.7.17 from ../gsoapStubs/Env/env.h - Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. - This part of the software is released under one of the following licenses: - GPL, the gSOAP public license, or Genivia's license for commercial use. -*/ - -#ifndef envStub_H -#define envStub_H -#include "stdsoap2.h" - -/******************************************************************************\ - * * - * Enumerations * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Types with Custom Serializers * - * * -\******************************************************************************/ - - -/******************************************************************************\ - * * - * Classes and Structs * - * * -\******************************************************************************/ - - -#if 0 /* volatile type: do not declare here, declared elsewhere */ - -#endif - -#ifndef SOAP_TYPE_SOAP_ENV__Header -#define SOAP_TYPE_SOAP_ENV__Header (7) -/* SOAP Header: */ -struct SOAP_ENV__Header -{ -#ifdef WITH_NOEMPTYSTRUCT -private: - char dummy; /* dummy member to enable compilation */ -#endif -}; -#endif - -#ifndef SOAP_TYPE_SOAP_ENV__Code -#define SOAP_TYPE_SOAP_ENV__Code (8) -/* SOAP Fault Code: */ -struct SOAP_ENV__Code -{ -public: - char *SOAP_ENV__Value; /* optional element of type xsd:QName */ - struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ -}; -#endif - -#ifndef SOAP_TYPE_SOAP_ENV__Detail -#define SOAP_TYPE_SOAP_ENV__Detail (10) -/* SOAP-ENV:Detail */ -struct SOAP_ENV__Detail -{ -public: - int __type; /* any type of element (defined below) */ - void *fault; /* transient */ - char *__any; -}; -#endif - -#ifndef SOAP_TYPE_SOAP_ENV__Reason -#define SOAP_TYPE_SOAP_ENV__Reason (13) -/* SOAP-ENV:Reason */ -struct SOAP_ENV__Reason -{ -public: - char *SOAP_ENV__Text; /* optional element of type xsd:string */ -}; -#endif - -#ifndef SOAP_TYPE_SOAP_ENV__Fault -#define SOAP_TYPE_SOAP_ENV__Fault (14) -/* SOAP Fault: */ -struct SOAP_ENV__Fault -{ -public: - char *faultcode; /* optional element of type xsd:QName */ - char *faultstring; /* optional element of type xsd:string */ - char *faultactor; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ - struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ - struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ - char *SOAP_ENV__Node; /* optional element of type xsd:string */ - char *SOAP_ENV__Role; /* optional element of type xsd:string */ - struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ -}; -#endif - -/******************************************************************************\ - * * - * Typedefs * - * * -\******************************************************************************/ - -#ifndef SOAP_TYPE__QName -#define SOAP_TYPE__QName (5) -typedef char *_QName; -#endif - -#ifndef SOAP_TYPE__XML -#define SOAP_TYPE__XML (6) -typedef char *_XML; -#endif - - -/******************************************************************************\ - * * - * Externals * - * * -\******************************************************************************/ - - -#endif - -/* End of envStub.h */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/stdsoap2.cpp --- a/usr/src/lib/libkmsagent/common/SOAP/stdsoap2.cpp Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15632 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ -/* - stdsoap2.c[pp] 2.7.17 - - gSOAP runtime engine - -gSOAP XML Web services tools -Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved. -This part of the software is released under ONE of the following licenses: -GPL, or the gSOAP public license, or Genivia's license for commercial use. --------------------------------------------------------------------------------- -Contributors: - -Oracle, Inc. - additions are noted in the code commented with -"Oracle customization" - - customization of the SSL accept timeout - - work around for SSL_Sleep reporting closed connection - - Function ssl_auth_init was static, but is now exported for external override - - redirection of gSoap debug logs when debug builds enabled - - added SSL_CTX_set_cipher_list call to restrict the cipher suite to RSA-2048/AES - TLS_RSA_WITH_AES_256_CBC_SHA is defined in RFC 3268 - also see http://www.openssl.org/docs/apps/ciphers.html - - Added SSL_OP_NO_SSLv3 to force use of TLS - - bug fix: added call to close socket handle in various places noted in the code, - since the caller overwrites soap->socket with the return value - - compile warning cleanup - - - Wind River Systems Inc., for the following additions under gSOAP public license: - - vxWorks compatible --------------------------------------------------------------------------------- -gSOAP public license. - -The contents of this file are subject to the gSOAP Public License Version 1.3 -(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.cs.fsu.edu/~engelen/soaplicense.html -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the License. - -The Initial Developer of the Original Code is Robert A. van Engelen. -Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved. --------------------------------------------------------------------------------- -GPL license. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. - -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -Author contact information: -engelen@genivia.com / engelen@acm.org - -This program is released under the GPL with the additional exemption that -compiling, linking, and/or using OpenSSL is allowed. --------------------------------------------------------------------------------- -A commercial use license is available from Genivia, Inc., contact@genivia.com --------------------------------------------------------------------------------- - -Installation note: - -Win32 build needs winsock.dll (Visual C++ "wsock32.lib") -To do this in Visual C++ 6.0, go to "Project", "settings", select the "Link" -tab (the project file needs to be selected in the file view) and add -"wsock32.lib" to the "Object/library modules" entry - -On Mac OS X with gcc (GCC) 3.1 20020420 (prerelease) you MUST compile with --fstack_check when using -O2 because gcc 3.1 has a bug that smashes the stack -when locally allocated data exceeds 64K. - -*/ - -#ifdef AS400 -# pragma convert(819) /* EBCDIC to ASCII */ -#endif - -#include "stdsoap2.h" - -/* - Oracle customization for OpenSSL 0.9.8 removal of deprecated function usage: RSA_generate_key -*/ -#ifdef WITH_OPENSSL -#ifdef OPENSSL_NO_DEPRECATED -#include -#include -#include -#endif -#endif - -#ifdef SOAP_MEM_DEBUG -#ifndef WIN32 -#include /* Oracle customization (for printstack(3C)) */ -#endif -#endif - -#ifdef __BORLANDC__ -# pragma warn -8060 -#else -# ifdef WIN32 -# ifdef UNDER_CE -# pragma comment(lib, "winsock.lib") -# else -# pragma comment(lib, "wsock32.lib") -# endif -# pragma warning(disable : 4996) /* disable deprecation warnings */ -# endif -#endif - -#ifdef __cplusplus -SOAP_SOURCE_STAMP("@(#) stdsoap2.cpp ver 2.7.17 2010-05-10 00:00:00 GMT") -extern "C" { -#else -SOAP_SOURCE_STAMP("@(#) stdsoap2.c ver 2.7.17 2010-05-10 00:00:00 GMT") -#endif - -/* 8bit character representing unknown/nonrepresentable character data (e.g. not supported by current locale with multibyte support enabled) */ -#ifndef SOAP_UNKNOWN_CHAR -#define SOAP_UNKNOWN_CHAR (127) -#endif - -/* EOF=-1 */ -#define SOAP_LT (soap_wchar)(-2) /* XML character '<' */ -#define SOAP_TT (soap_wchar)(-3) /* XML character '' */ -#define SOAP_QT (soap_wchar)(-5) /* XML character '"' */ -#define SOAP_AP (soap_wchar)(-6) /* XML character ''' */ - -#define soap_blank(c) ((c) >= 0 && (c) <= 32) -#define soap_notblank(c) ((c) > 32) - -#if defined(WIN32) && !defined(UNDER_CE) -#define soap_hash_ptr(p) ((PtrToUlong(p) >> 3) & (SOAP_PTRHASH - 1)) -#else -#define soap_hash_ptr(p) ((size_t)(((unsigned long)(p) >> 3) & (SOAP_PTRHASH-1))) -#endif - -#if !defined(WITH_LEAN) || defined(SOAP_DEBUG) -static void soap_init_logs(struct soap*); -#endif -#ifdef SOAP_DEBUG -static void soap_close_logfile(struct soap*, int); -static void soap_set_logfile(struct soap*, int, const char*); -#endif - -#ifdef SOAP_MEM_DEBUG -static void soap_init_mht(struct soap*); -static void soap_free_mht(struct soap*); -static void soap_track_unlink(struct soap*, const void*); -#endif - -#ifndef PALM_2 -static int soap_set_error(struct soap*, const char*, const char*, const char*, const char*, int); -static int soap_copy_fault(struct soap*, const char*, const char*, const char*, const char*); -static int soap_getattrval(struct soap*, char*, size_t, soap_wchar); -#endif - -#ifndef PALM_1 -static void soap_free_ns(struct soap *soap); -static soap_wchar soap_char(struct soap*); -static soap_wchar soap_get_pi(struct soap*); -static int soap_isxdigit(int); -static void *fplugin(struct soap*, const char*); -static char *soap_get_http_body(struct soap*); -static size_t soap_count_attachments(struct soap *soap); -static int soap_try_connect_command(struct soap*, int http_command, const char *endpoint, const char *action); -#ifndef WITH_NOIDREF -static void soap_update_ptrs(struct soap*, char*, char*, char*, char*); -static int soap_has_copies(struct soap*, const char*, const char*); -static void soap_init_iht(struct soap*); -static void soap_free_iht(struct soap*); -static void soap_init_pht(struct soap*); -static void soap_free_pht(struct soap*); -#endif -#endif - -#ifndef WITH_LEAN -static const char *soap_set_validation_fault(struct soap*, const char*, const char*); -static int soap_isnumeric(struct soap*, const char*); -static struct soap_nlist *soap_push_ns(struct soap *soap, const char *id, const char *ns, short utilized); -static void soap_utilize_ns(struct soap *soap, const char *tag, size_t n); -#endif - -#ifndef WITH_LEANER -#ifndef PALM_1 -static struct soap_multipart *soap_new_multipart(struct soap*, struct soap_multipart**, struct soap_multipart**, char*, size_t); -static int soap_putdimefield(struct soap*, const char*, size_t); -static char *soap_getdimefield(struct soap*, size_t); -static void soap_select_mime_boundary(struct soap*); -static int soap_valid_mime_boundary(struct soap*); -static void soap_resolve_attachment(struct soap*, struct soap_multipart*); -#endif -#endif - -#ifdef WITH_GZIP -static int soap_getgziphdr(struct soap*); -#endif - -#ifdef WITH_OPENSSL -int soap_ssl_init_done = 0; - -// -// Oracle customization -// -// Function ssl_auth_init was static, but is now exported for external override -/* -static int ssl_auth_init(struct soap*); -*/ -int ssl_auth_init(struct soap*); -static int ssl_verify_callback(int, X509_STORE_CTX*); -static int ssl_verify_callback_allow_expired_certificate(int, X509_STORE_CTX*); -static int ssl_password(char*, int, int, void *); -#endif - -#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) -#ifndef PALM_1 -static const char *soap_decode(char*, size_t, const char*, const char*); -#endif -#endif - -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static soap_wchar soap_getchunkchar(struct soap*); -static const char *http_error(struct soap*, int); -static int http_get(struct soap*); -static int http_405(struct soap*); -static int http_post(struct soap*, const char*, const char*, int, const char*, const char*, size_t); -static int http_send_header(struct soap*, const char*); -static int http_post_header(struct soap*, const char*, const char*); -static int http_response(struct soap*, int, size_t); -static int http_parse(struct soap*); -static int http_parse_header(struct soap*, const char*, const char*); -#endif -#endif - -#ifndef WITH_NOIO - -#ifndef PALM_1 -static int fsend(struct soap*, const char*, size_t); -static size_t frecv(struct soap*, char*, size_t); -static int tcp_init(struct soap*); -static const char *tcp_error(struct soap*); -#ifndef WITH_IPV6 -static int tcp_gethost(struct soap*, const char *addr, struct in_addr *inaddr); -#endif -static SOAP_SOCKET tcp_connect(struct soap*, const char *endpoint, const char *host, int port); -static SOAP_SOCKET tcp_accept(struct soap*, SOAP_SOCKET, struct sockaddr*, int*); -static int tcp_select(struct soap*, SOAP_SOCKET, int, int); -static int tcp_disconnect(struct soap*); -static int tcp_closesocket(struct soap*, SOAP_SOCKET); -static int tcp_shutdownsocket(struct soap*, SOAP_SOCKET, int); -static const char *soap_strerror(struct soap*); -#endif - -#define SOAP_TCP_SELECT_RCV 0x1 -#define SOAP_TCP_SELECT_SND 0x2 -#define SOAP_TCP_SELECT_ERR 0x4 -#define SOAP_TCP_SELECT_ALL 0x7 - -#if defined(WIN32) - #define SOAP_SOCKBLOCK(fd) \ - { u_long blocking = 0; \ - ioctlsocket(fd, FIONBIO, &blocking); \ - } - #define SOAP_SOCKNONBLOCK(fd) \ - { u_long nonblocking = 1; \ - ioctlsocket(fd, FIONBIO, &nonblocking); \ - } -#elif defined(VXWORKS) - #define SOAP_SOCKBLOCK(fd) \ - { u_long blocking = 0; \ - ioctl(fd, FIONBIO, (int)(&blocking)); \ - } - #define SOAP_SOCKNONBLOCK(fd) \ - { u_long nonblocking = 1; \ - ioctl(fd, FIONBIO, (int)(&nonblocking)); \ - } -#elif defined(PALM) - #define SOAP_SOCKBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0)&~O_NONBLOCK); - #define SOAP_SOCKNONBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0)|O_NONBLOCK); -#elif defined(SYMBIAN) - #define SOAP_SOCKBLOCK(fd) \ - { long blocking = 0; \ - ioctl(fd, 0/*FIONBIO*/, &blocking); \ - } - #define SOAP_SOCKNONBLOCK(fd) \ - { long nonblocking = 1; \ - ioctl(fd, 0/*FIONBIO*/, &nonblocking); \ - } -#else - #define SOAP_SOCKBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)&~O_NONBLOCK); - #define SOAP_SOCKNONBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)|O_NONBLOCK); -#endif - -#endif - -#if defined(PALM) && !defined(PALM_2) -unsigned short errno; -#endif - -#ifndef PALM_1 -static const char soap_env1[42] = "http://schemas.xmlsoap.org/soap/envelope/"; -static const char soap_enc1[42] = "http://schemas.xmlsoap.org/soap/encoding/"; -static const char soap_env2[40] = "http://www.w3.org/2003/05/soap-envelope"; -static const char soap_enc2[40] = "http://www.w3.org/2003/05/soap-encoding"; -static const char soap_rpc[35] = "http://www.w3.org/2003/05/soap-rpc"; -#endif - -#ifndef PALM_1 -const struct soap_double_nan soap_double_nan = {0xFFFFFFFF, 0xFFFFFFFF}; -static const char soap_base64o[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -static const char soap_base64i[81] = "\76XXX\77\64\65\66\67\70\71\72\73\74\75XXXXXXX\00\01\02\03\04\05\06\07\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31XXXXXX\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63"; -#endif - -#ifndef WITH_LEAN -static const char soap_indent[11] = "\n\t\t\t\t\t\t\t\t\t"; -/* Alternative indentation form for SOAP_XML_INDENT: -static const char soap_indent[21] = "\n "; -*/ -#endif - -#ifndef SOAP_CANARY -# define SOAP_CANARY (0xC0DE) -#endif - -static const char soap_padding[4] = "\0\0\0"; -#define SOAP_STR_PADDING (soap_padding) -#define SOAP_STR_EOS (soap_padding) -#define SOAP_NON_NULL (soap_padding) - -#ifndef WITH_LEAN -static const struct soap_code_map html_entity_codes[] = /* entities for XHTML parsing */ -{ { 160, "nbsp" }, - { 161, "iexcl" }, - { 162, "cent" }, - { 163, "pound" }, - { 164, "curren" }, - { 165, "yen" }, - { 166, "brvbar" }, - { 167, "sect" }, - { 168, "uml" }, - { 169, "copy" }, - { 170, "ordf" }, - { 171, "laquo" }, - { 172, "not" }, - { 173, "shy" }, - { 174, "reg" }, - { 175, "macr" }, - { 176, "deg" }, - { 177, "plusmn" }, - { 178, "sup2" }, - { 179, "sup3" }, - { 180, "acute" }, - { 181, "micro" }, - { 182, "para" }, - { 183, "middot" }, - { 184, "cedil" }, - { 185, "sup1" }, - { 186, "ordm" }, - { 187, "raquo" }, - { 188, "frac14" }, - { 189, "frac12" }, - { 190, "frac34" }, - { 191, "iquest" }, - { 192, "Agrave" }, - { 193, "Aacute" }, - { 194, "Acirc" }, - { 195, "Atilde" }, - { 196, "Auml" }, - { 197, "Aring" }, - { 198, "AElig" }, - { 199, "Ccedil" }, - { 200, "Egrave" }, - { 201, "Eacute" }, - { 202, "Ecirc" }, - { 203, "Euml" }, - { 204, "Igrave" }, - { 205, "Iacute" }, - { 206, "Icirc" }, - { 207, "Iuml" }, - { 208, "ETH" }, - { 209, "Ntilde" }, - { 210, "Ograve" }, - { 211, "Oacute" }, - { 212, "Ocirc" }, - { 213, "Otilde" }, - { 214, "Ouml" }, - { 215, "times" }, - { 216, "Oslash" }, - { 217, "Ugrave" }, - { 218, "Uacute" }, - { 219, "Ucirc" }, - { 220, "Uuml" }, - { 221, "Yacute" }, - { 222, "THORN" }, - { 223, "szlig" }, - { 224, "agrave" }, - { 225, "aacute" }, - { 226, "acirc" }, - { 227, "atilde" }, - { 228, "auml" }, - { 229, "aring" }, - { 230, "aelig" }, - { 231, "ccedil" }, - { 232, "egrave" }, - { 233, "eacute" }, - { 234, "ecirc" }, - { 235, "euml" }, - { 236, "igrave" }, - { 237, "iacute" }, - { 238, "icirc" }, - { 239, "iuml" }, - { 240, "eth" }, - { 241, "ntilde" }, - { 242, "ograve" }, - { 243, "oacute" }, - { 244, "ocirc" }, - { 245, "otilde" }, - { 246, "ouml" }, - { 247, "divide" }, - { 248, "oslash" }, - { 249, "ugrave" }, - { 250, "uacute" }, - { 251, "ucirc" }, - { 252, "uuml" }, - { 253, "yacute" }, - { 254, "thorn" }, - { 255, "yuml" }, - { 0, NULL } -}; -#endif - -#ifndef WITH_NOIO -#ifndef WITH_LEAN -static const struct soap_code_map h_error_codes[] = -{ -#ifdef HOST_NOT_FOUND - { HOST_NOT_FOUND, "Host not found" }, -#endif -#ifdef TRY_AGAIN - { TRY_AGAIN, "Try Again" }, -#endif -#ifdef NO_RECOVERY - { NO_RECOVERY, "No Recovery" }, -#endif -#ifdef NO_DATA - { NO_DATA, "No Data" }, -#endif -#ifdef NO_ADDRESS - { NO_ADDRESS, "No Address" }, -#endif - { 0, NULL } -}; -#endif -#endif - -#ifndef WITH_NOHTTP -#ifndef WITH_LEAN -static const struct soap_code_map h_http_error_codes[] = -{ { 200, "OK" }, - { 201, "Created" }, - { 202, "Accepted" }, - { 203, "Non-Authoritative Information" }, - { 204, "No Content" }, - { 205, "Reset Content" }, - { 206, "Partial Content" }, - { 300, "Multiple Choices" }, - { 301, "Moved Permanently" }, - { 302, "Found" }, - { 303, "See Other" }, - { 304, "Not Modified" }, - { 305, "Use Proxy" }, - { 307, "Temporary Redirect" }, - { 400, "Bad Request" }, - { 401, "Unauthorized" }, - { 402, "Payment Required" }, - { 403, "Forbidden" }, - { 404, "Not Found" }, - { 405, "Method Not Allowed" }, - { 406, "Not Acceptable" }, - { 407, "Proxy Authentication Required" }, - { 408, "Request Time-out" }, - { 409, "Conflict" }, - { 410, "Gone" }, - { 411, "Length Required" }, - { 412, "Precondition Failed" }, - { 413, "Request Entity Too Large" }, - { 414, "Request-URI Too Large" }, - { 415, "Unsupported Media Type" }, - { 416, "Requested range not satisfiable" }, - { 417, "Expectation Failed" }, - { 500, "Internal Server Error" }, - { 501, "Not Implemented" }, - { 502, "Bad Gateway" }, - { 503, "Service Unavailable" }, - { 504, "Gateway Time-out" }, - { 505, "HTTP Version not supported" }, - { 0, NULL } -}; -#endif -#endif - -#ifdef WITH_OPENSSL -static const struct soap_code_map h_ssl_error_codes[] = -{ -#define _SSL_ERROR(e) { e, #e } - _SSL_ERROR(SSL_ERROR_SSL), - _SSL_ERROR(SSL_ERROR_ZERO_RETURN), - _SSL_ERROR(SSL_ERROR_WANT_READ), - _SSL_ERROR(SSL_ERROR_WANT_WRITE), - _SSL_ERROR(SSL_ERROR_WANT_CONNECT), - _SSL_ERROR(SSL_ERROR_WANT_X509_LOOKUP), - _SSL_ERROR(SSL_ERROR_SYSCALL), - { 0, NULL } -}; -#endif - -#ifndef WITH_LEANER -static const struct soap_code_map mime_codes[] = -{ { SOAP_MIME_7BIT, "7bit" }, - { SOAP_MIME_8BIT, "8bit" }, - { SOAP_MIME_BINARY, "binary" }, - { SOAP_MIME_QUOTED_PRINTABLE, "quoted-printable" }, - { SOAP_MIME_BASE64, "base64" }, - { SOAP_MIME_IETF_TOKEN, "ietf-token" }, - { SOAP_MIME_X_TOKEN, "x-token" }, - { 0, NULL } -}; -#endif - -#ifdef WIN32 -static int tcp_done = 0; -#endif - -#if defined(HP_UX) && defined(HAVE_GETHOSTBYNAME_R) -extern int h_errno; -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -fsend(struct soap *soap, const char *s, size_t n) -{ register int nwritten, err; -#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) - if (soap->os) - { soap->os->write(s, (std::streamsize)n); - if (soap->os->good()) - return SOAP_OK; - soap->errnum = 0; - return SOAP_EOF; - } -#endif - while (n) - { if (soap_valid_socket(soap->socket)) - { - if (soap->send_timeout) - { for (;;) - { register int r; -#ifdef WITH_OPENSSL - if (soap->ssl) - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_ALL, soap->send_timeout); - else -#endif - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->send_timeout); - if (r > 0) - break; - if (!r) - return SOAP_EOF; - err = soap->errnum; - if (!err) - return soap->error; - if (err != SOAP_EINTR && err != SOAP_EAGAIN && err != SOAP_EWOULDBLOCK) - return SOAP_EOF; - } - } -#ifdef WITH_OPENSSL - if (soap->ssl) - nwritten = SSL_write(soap->ssl, s, (int)n); - else if (soap->bio) - nwritten = BIO_write(soap->bio, s, (int)n); - else -#endif -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - { if (soap->peerlen) - nwritten = sendto(soap->socket, (char*)s, (SOAP_WINSOCKINT)n, soap->socket_flags, (struct sockaddr*)&soap->peer, (SOAP_WINSOCKINT)soap->peerlen); - else - nwritten = send(soap->socket, s, (SOAP_WINSOCKINT)n, soap->socket_flags); - /* retry and back-off algorithm */ - /* TODO: this is not very clear from specs so verify and limit conditions under which we should loop (e.g. ENOBUFS) */ - if (nwritten < 0) - { int udp_repeat; - int udp_delay; - if ((soap->connect_flags & SO_BROADCAST)) - udp_repeat = 3; /* SOAP-over-UDP MULTICAST_UDP_REPEAT - 1 */ - else - udp_repeat = 1; /* SOAP-over-UDP UNICAST_UDP_REPEAT - 1 */ - udp_delay = (soap_random % 201) + 50; /* UDP_MIN_DELAY .. UDP_MAX_DELAY */ - do - { tcp_select(soap, soap->socket, SOAP_TCP_SELECT_ERR, -1000 * udp_delay); - if (soap->peerlen) - nwritten = sendto(soap->socket, (char*)s, (SOAP_WINSOCKINT)n, soap->socket_flags, (struct sockaddr*)&soap->peer, (SOAP_WINSOCKINT)soap->peerlen); - else - nwritten = send(soap->socket, s, (SOAP_WINSOCKINT)n, soap->socket_flags); - udp_delay <<= 1; - if (udp_delay > 500) /* UDP_UPPER_DELAY */ - udp_delay = 500; - } - while (nwritten < 0 && --udp_repeat > 0); - } - } - else -#endif -#if !defined(PALM) && !defined(AS400) - nwritten = send(soap->socket, s, (int)n, soap->socket_flags); -#else - nwritten = send(soap->socket, (void*)s, n, soap->socket_flags); -#endif - if (nwritten <= 0) - { - register int r = 0; - err = soap_socket_errno(soap->socket); -#ifdef WITH_OPENSSL - if (soap->ssl && (r = SSL_get_error(soap->ssl, nwritten)) != SSL_ERROR_NONE && r != SSL_ERROR_WANT_READ && r != SSL_ERROR_WANT_WRITE) - { soap->errnum = err; - return SOAP_EOF; - } -#endif - if (err == SOAP_EWOULDBLOCK || err == SOAP_EAGAIN) - { -#ifdef WITH_OPENSSL - if (soap->ssl && r == SSL_ERROR_WANT_READ) - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); - else - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); -#else - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); -#endif - if (!r && soap->send_timeout) - return SOAP_EOF; - if (r < 0 && soap->errnum != SOAP_EINTR) - return SOAP_EOF; - } - else if (err && err != SOAP_EINTR) - { soap->errnum = err; - return SOAP_EOF; - } - nwritten = 0; /* and call write() again */ - } - } - else - { -#ifdef WITH_FASTCGI - nwritten = fwrite((void*)s, 1, n, stdout); - fflush(stdout); -#else -#ifdef UNDER_CE - nwritten = fwrite(s, 1, n, soap->sendfd); -#else -#ifdef VXWORKS -#ifdef WMW_RPM_IO - if (soap->rpmreqid) - nwritten = (httpBlockPut(soap->rpmreqid, (char*)s, n) == 0) ? n : -1; - else -#endif - nwritten = fwrite(s, sizeof(char), n, fdopen(soap->sendfd, "w")); -#else -#ifdef WIN32 - nwritten = _write(soap->sendfd, s, (unsigned int)n); -#else - nwritten = write(soap->sendfd, s, (unsigned int)n); -#endif -#endif -#endif -#endif - if (nwritten <= 0) - { -#ifndef WITH_FASTCGI - err = soap_errno; -#else - err = EOF; -#endif - if (err && err != SOAP_EINTR && err != SOAP_EWOULDBLOCK && err != SOAP_EAGAIN) - { soap->errnum = err; - return SOAP_EOF; - } - nwritten = 0; /* and call write() again */ - } - } - n -= nwritten; - s += nwritten; - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_send_raw(struct soap *soap, const char *s, size_t n) -{ if (!n) - return SOAP_OK; - if (soap->mode & SOAP_IO_LENGTH) - { soap->count += n; -#ifndef WITH_LEANER - if (soap->fpreparesend && (soap->mode & SOAP_IO) != SOAP_IO_STORE) - return soap->error = soap->fpreparesend(soap, s, n); -#endif - return SOAP_OK; - } - if (soap->mode & SOAP_IO) - { register size_t i = SOAP_BUFLEN - soap->bufidx; - while (n >= i) - { memcpy(soap->buf + soap->bufidx, s, i); - soap->bufidx = SOAP_BUFLEN; - if (soap_flush(soap)) - return soap->error; - s += i; - n -= i; - i = SOAP_BUFLEN; - } - memcpy(soap->buf + soap->bufidx, s, n); - soap->bufidx += n; - return SOAP_OK; - } - return soap_flush_raw(soap, s, n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_flush(struct soap *soap) -{ register size_t n = soap->bufidx; - if (n) - { -#ifndef WITH_LEANER - if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) - { register int r; - if (soap->fpreparesend && (r = soap->fpreparesend(soap, soap->buf, n))) - return soap->error = r; - } -#endif - soap->bufidx = 0; -#ifdef WITH_ZLIB - if (soap->mode & SOAP_ENC_ZLIB) - { soap->d_stream->next_in = (Byte*)soap->buf; - soap->d_stream->avail_in = (unsigned int)n; -#ifdef WITH_GZIP - soap->z_crc = crc32(soap->z_crc, (Byte*)soap->buf, (unsigned int)n); -#endif - do - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflating %u bytes\n", soap->d_stream->avail_in)); - if (deflate(soap->d_stream, Z_NO_FLUSH) != Z_OK) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unable to deflate: %s\n", soap->d_stream->msg?soap->d_stream->msg:SOAP_STR_EOS)); - return soap->error = SOAP_ZLIB_ERROR; - } - if (!soap->d_stream->avail_out) - { if (soap_flush_raw(soap, soap->z_buf, SOAP_BUFLEN)) - return soap->error; - soap->d_stream->next_out = (Byte*)soap->z_buf; - soap->d_stream->avail_out = SOAP_BUFLEN; - } - } while (soap->d_stream->avail_in); - } - else -#endif - return soap_flush_raw(soap, soap->buf, n); - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_flush_raw(struct soap *soap, const char *s, size_t n) -{ if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) - { register char *t; - if (!(t = (char*)soap_push_block(soap, NULL, n))) - return soap->error = SOAP_EOM; - memcpy(t, s, n); - return SOAP_OK; - } -#ifndef WITH_LEANER - if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) - { char t[16]; - sprintf(t, "\r\n%lX\r\n" + (soap->chunksize ? 0 : 2), (unsigned long)n); - DBGMSG(SENT, t, strlen(t)); - if ((soap->error = soap->fsend(soap, t, strlen(t)))) - return soap->error; - soap->chunksize += n; - } - DBGMSG(SENT, s, n); -#endif - return soap->error = soap->fsend(soap, s, n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_send(struct soap *soap, const char *s) -{ if (s) - return soap_send_raw(soap, s, strlen(s)); - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_send2(struct soap *soap, const char *s1, const char *s2) -{ if (soap_send(soap, s1)) - return soap->error; - return soap_send(soap, s2); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_send3(struct soap *soap, const char *s1, const char *s2, const char *s3) -{ if (soap_send(soap, s1) - || soap_send(soap, s2)) - return soap->error; - return soap_send(soap, s3); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static size_t -frecv(struct soap *soap, char *s, size_t n) -{ register int r; - register int retries = 100; /* max 100 retries with non-blocking sockets */ - soap->errnum = 0; -#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) - if (soap->is) - { if (soap->is->good()) - return soap->is->read(s, (std::streamsize)n).gcount(); - return 0; - } -#endif - if (soap_valid_socket(soap->socket)) - { for (;;) - { -#ifdef WITH_OPENSSL - register int err = 0; -#endif -#ifdef WITH_OPENSSL - if (soap->recv_timeout && !soap->ssl) /* SSL: sockets are nonblocking */ -#else - if (soap->recv_timeout) -#endif - { for (;;) - { r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->recv_timeout); - if (r > 0) - break; - if (!r) - return 0; - r = soap->errnum; - if (r != SOAP_EINTR && r != SOAP_EAGAIN && r != SOAP_EWOULDBLOCK) - return 0; - } - } -#ifdef WITH_OPENSSL - if (soap->ssl) - { r = SSL_read(soap->ssl, s, (int)n); - if (r > 0) - return (size_t)r; - err = SSL_get_error(soap->ssl, r); - if (err != SSL_ERROR_NONE && err != SSL_ERROR_WANT_READ && err != SSL_ERROR_WANT_WRITE) - return 0; - } - else if (soap->bio) - { r = BIO_read(soap->bio, s, (int)n); - if (r > 0) - return (size_t)r; - return 0; - } - else -#endif - { -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - { SOAP_SOCKLEN_T k = (SOAP_SOCKLEN_T)sizeof(soap->peer); - memset((void*)&soap->peer, 0, sizeof(soap->peer)); - r = recvfrom(soap->socket, s, (SOAP_WINSOCKINT)n, soap->socket_flags, (struct sockaddr*)&soap->peer, &k); /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h */ - soap->peerlen = (size_t)k; -#ifndef WITH_IPV6 - soap->ip = ntohl(soap->peer.sin_addr.s_addr); -#endif - } - else -#endif - r = recv(soap->socket, s, (int)n, soap->socket_flags); -#ifdef PALM - /* CycleSyncDisplay(curStatusMsg); */ -#endif - if (r >= 0) - return (size_t)r; - r = soap_socket_errno(soap->socket); - if (r != SOAP_EINTR && r != SOAP_EAGAIN && r != SOAP_EWOULDBLOCK) - { soap->errnum = r; - return 0; - } - } -#ifdef WITH_OPENSSL - if (soap->ssl && err == SSL_ERROR_WANT_WRITE) - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); - else - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); -#else - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); -#endif - if (!r && soap->recv_timeout) - return 0; - if (r < 0) - { r = soap->errnum; - if (r != SOAP_EINTR && r != SOAP_EAGAIN && r != SOAP_EWOULDBLOCK) - return 0; - } - if (retries-- <= 0) - return 0; -#ifdef PALM - r = soap_socket_errno(soap->socket); - if (r != SOAP_EINTR && retries-- <= 0) - { soap->errnum = r; - return 0; - } -#endif - } - } -#ifdef WITH_FASTCGI - return fread(s, 1, n, stdin); -#else -#ifdef UNDER_CE - return fread(s, 1, n, soap->recvfd); -#else -#ifdef WMW_RPM_IO - if (soap->rpmreqid) - r = httpBlockRead(soap->rpmreqid, s, n); - else -#endif -#ifdef WIN32 - r = _read(soap->recvfd, s, (unsigned int)n); -#else - r = read(soap->recvfd, s, (unsigned int)n); -#endif - if (r >= 0) - return (size_t)r; - soap->errnum = soap_errno; - return 0; -#endif -#endif -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static soap_wchar -soap_getchunkchar(struct soap *soap) -{ if (soap->bufidx < soap->buflen) - return soap->buf[soap->bufidx++]; - soap->bufidx = 0; - soap->buflen = soap->chunkbuflen = soap->frecv(soap, soap->buf, SOAP_BUFLEN); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read %u bytes from socket %d\n", (unsigned int)soap->buflen, soap->socket)); - DBGMSG(RECV, soap->buf, soap->buflen); - if (soap->buflen) - return soap->buf[soap->bufidx++]; - return EOF; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static int -soap_isxdigit(int c) -{ return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_recv_raw(struct soap *soap) -{ register size_t ret; -#if !defined(WITH_LEANER) || defined(WITH_ZLIB) - register int r; -#endif -#ifdef WITH_ZLIB - if (soap->mode & SOAP_ENC_ZLIB) - { if (soap->d_stream->next_out == Z_NULL) - return EOF; - if (soap->d_stream->avail_in || !soap->d_stream->avail_out) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflating\n")); - soap->d_stream->next_out = (Byte*)soap->buf; - soap->d_stream->avail_out = SOAP_BUFLEN; - r = inflate(soap->d_stream, Z_NO_FLUSH); - if (r == Z_NEED_DICT && soap->z_dict) - r = inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len); - if (r == Z_OK || r == Z_STREAM_END) - { soap->bufidx = 0; - ret = soap->buflen = SOAP_BUFLEN - soap->d_stream->avail_out; - if (soap->zlib_in == SOAP_ZLIB_GZIP) - soap->z_crc = crc32(soap->z_crc, (Byte*)soap->buf, (unsigned int)ret); - if (r == Z_STREAM_END) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflated %lu->%lu bytes\n", soap->d_stream->total_in, soap->d_stream->total_out)); - soap->z_ratio_in = (float)soap->d_stream->total_in / (float)soap->d_stream->total_out; - soap->d_stream->next_out = Z_NULL; - } - if (ret) - { soap->count += ret; - DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n---- decompressed ----\n")); - DBGMSG(RECV, soap->buf, ret); - DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n----\n")); -#ifndef WITH_LEANER - if (soap->fpreparerecv && (r = soap->fpreparerecv(soap, soap->buf, ret))) - return soap->error = r; -#endif - return SOAP_OK; - } - } - else if (r != Z_BUF_ERROR) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflate error: %s\n", soap->d_stream->msg?soap->d_stream->msg:SOAP_STR_EOS)); - soap->d_stream->next_out = Z_NULL; - soap->error = SOAP_ZLIB_ERROR; - return EOF; - } - } -zlib_again: - if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK && !soap->chunksize) - { memcpy(soap->buf, soap->z_buf, SOAP_BUFLEN); - soap->buflen = soap->z_buflen; - } - DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n---- compressed ----\n")); - } -#endif -#ifndef WITH_NOHTTP - if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) /* read HTTP chunked transfer */ - { for (;;) - { register soap_wchar c; - char *t, tmp[8]; - if (soap->chunksize) - { soap->buflen = ret = soap->frecv(soap, soap->buf, soap->chunksize > SOAP_BUFLEN ? SOAP_BUFLEN : soap->chunksize); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Getting chunk: read %u bytes\n", (unsigned int)ret)); - DBGMSG(RECV, soap->buf, ret); - soap->bufidx = 0; - soap->chunksize -= ret; - break; - } - t = tmp; - if (!soap->chunkbuflen) - { soap->chunkbuflen = ret = soap->frecv(soap, soap->buf, SOAP_BUFLEN); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read %u bytes (chunked) from socket %d\n", (unsigned int)ret, soap->socket)); - DBGMSG(RECV, soap->buf, ret); - soap->bufidx = 0; - if (!ret) - return soap->ahead = EOF; - } - else - soap->bufidx = soap->buflen; - soap->buflen = soap->chunkbuflen; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Getting chunk size (idx=%u len=%u)\n", (unsigned int)soap->bufidx, (unsigned int)soap->buflen)); - while (!soap_isxdigit((int)(c = soap_getchunkchar(soap)))) - { if ((int)c == EOF) - return soap->ahead = EOF; - } - do - *t++ = (char)c; - while (soap_isxdigit((int)(c = soap_getchunkchar(soap))) && t - tmp < 7); - while ((int)c != EOF && c != '\n') - c = soap_getchunkchar(soap); - if ((int)c == EOF) - return soap->ahead = EOF; - *t = '\0'; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunk size = %s (hex)\n", tmp)); - soap->chunksize = soap_strtoul(tmp, &t, 16); - if (!soap->chunksize) - { soap->chunkbuflen = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of chunked message\n")); - while ((int)c != EOF && c != '\n') - c = soap_getchunkchar(soap); - ret = 0; - soap->ahead = EOF; - break; - } - soap->buflen = soap->bufidx + soap->chunksize; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Moving buf len to idx=%u len=%u (%s)\n", (unsigned int)soap->bufidx, (unsigned int)soap->buflen, tmp)); - if (soap->buflen > soap->chunkbuflen) - { soap->buflen = soap->chunkbuflen; - soap->chunksize -= soap->buflen - soap->bufidx; - soap->chunkbuflen = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Passed end of buffer for chunked HTTP (%u bytes left)\n", (unsigned int)(soap->buflen - soap->bufidx))); - } - else if (soap->chunkbuflen) - soap->chunksize = 0; - ret = soap->buflen - soap->bufidx; - if (ret) - break; - } - } - else -#endif - { soap->bufidx = 0; - soap->buflen = ret = soap->frecv(soap, soap->buf, SOAP_BUFLEN); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read %u bytes from socket %d\n", (unsigned int)ret, soap->socket)); - DBGMSG(RECV, soap->buf, ret); - } -#ifdef WITH_ZLIB - if (soap->mode & SOAP_ENC_ZLIB) - { memcpy(soap->z_buf, soap->buf, SOAP_BUFLEN); - soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); - soap->d_stream->avail_in = (unsigned int)ret; - soap->d_stream->next_out = (Byte*)soap->buf; - soap->d_stream->avail_out = SOAP_BUFLEN; - r = inflate(soap->d_stream, Z_NO_FLUSH); - if (r == Z_NEED_DICT && soap->z_dict) - r = inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len); - if (r == Z_OK || r == Z_STREAM_END) - { soap->bufidx = 0; - soap->z_buflen = soap->buflen; - soap->buflen = SOAP_BUFLEN - soap->d_stream->avail_out; - if (soap->zlib_in == SOAP_ZLIB_GZIP) - soap->z_crc = crc32(soap->z_crc, (Byte*)soap->buf, (unsigned int)soap->buflen); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflated %u bytes\n", (unsigned int)soap->buflen)); - if (ret && !soap->buflen && r != Z_STREAM_END) - goto zlib_again; - ret = soap->buflen; - if (r == Z_STREAM_END) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflated total %lu->%lu bytes\n", soap->d_stream->total_in, soap->d_stream->total_out)); - soap->z_ratio_in = (float)soap->d_stream->total_in / (float)soap->d_stream->total_out; - soap->d_stream->next_out = Z_NULL; - } - DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n---- decompressed ----\n")); - DBGMSG(RECV, soap->buf, ret); -#ifndef WITH_LEANER - if (soap->fpreparerecv && (r = soap->fpreparerecv(soap, soap->buf, ret))) - return soap->error = r; -#endif - } - else - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unable to inflate: (%d) %s\n", r, soap->d_stream->msg?soap->d_stream->msg:SOAP_STR_EOS)); - soap->d_stream->next_out = Z_NULL; - soap->error = SOAP_ZLIB_ERROR; - return EOF; - } - } -#endif -#ifndef WITH_LEANER - if (soap->fpreparerecv -#ifdef WITH_ZLIB - && soap->zlib_in == SOAP_ZLIB_NONE -#endif - && (r = soap->fpreparerecv(soap, soap->buf + soap->bufidx, ret))) - return soap->error = r; -#endif - soap->count += ret; - return !ret; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_recv(struct soap *soap) -{ -#ifndef WITH_LEANER - if (soap->mode & SOAP_ENC_DIME) - { if (soap->dime.buflen) - { char *s; - int i; - unsigned char tmp[12]; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME hdr for chunked DIME is in buffer\n")); - soap->count += soap->dime.buflen - soap->buflen; - soap->buflen = soap->dime.buflen; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Skip padding (%ld bytes)\n", -(long)soap->dime.size&3)); - for (i = -(long)soap->dime.size&3; i > 0; i--) - { soap->bufidx++; - if (soap->bufidx >= soap->buflen) - if (soap_recv_raw(soap)) - return EOF; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get DIME hdr for next chunk\n")); - s = (char*)tmp; - for (i = 12; i > 0; i--) - { *s++ = soap->buf[soap->bufidx++]; - if (soap->bufidx >= soap->buflen) - if (soap_recv_raw(soap)) - return EOF; - } - soap->dime.flags = tmp[0] & 0x7; - soap->dime.size = ((size_t)tmp[8] << 24) | ((size_t)tmp[9] << 16) | ((size_t)tmp[10] << 8) | ((size_t)tmp[11]); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get DIME chunk (%u bytes)\n", (unsigned int)soap->dime.size)); - if (soap->dime.flags & SOAP_DIME_CF) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "More chunking\n")); - soap->dime.chunksize = soap->dime.size; - if (soap->buflen - soap->bufidx >= soap->dime.size) - { soap->dime.buflen = soap->buflen; - soap->buflen = soap->bufidx + soap->dime.chunksize; - } - else - soap->dime.chunksize -= soap->buflen - soap->bufidx; - } - else - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Last chunk\n")); - soap->dime.buflen = 0; - soap->dime.chunksize = 0; - } - soap->count = soap->buflen - soap->bufidx; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%u bytes remaining\n", (unsigned int)soap->count)); - return SOAP_OK; - } - if (soap->dime.chunksize) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get next DIME hdr for chunked DIME (%u bytes chunk)\n", (unsigned int)soap->dime.chunksize)); - if (soap_recv_raw(soap)) - return EOF; - if (soap->buflen - soap->bufidx >= soap->dime.chunksize) - { soap->dime.buflen = soap->buflen; - soap->count -= soap->buflen - soap->bufidx - soap->dime.chunksize; - soap->buflen = soap->bufidx + soap->dime.chunksize; - } - else - soap->dime.chunksize -= soap->buflen - soap->bufidx; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%lu bytes remaining, count=%u\n", (unsigned long)(soap->buflen-soap->bufidx), (unsigned int)soap->count)); - return SOAP_OK; - } - } -#endif - return soap_recv_raw(soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -soap_wchar -SOAP_FMAC2 -soap_getchar(struct soap *soap) -{ register soap_wchar c; - c = soap->ahead; - if (c) - { if (c != EOF) - soap->ahead = 0; - return c; - } - return soap_get1(soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -const struct soap_code_map* -SOAP_FMAC2 -soap_code(const struct soap_code_map *code_map, const char *str) -{ if (code_map && str) - { while (code_map->string) - { if (!strcmp(str, code_map->string)) /* case sensitive */ - return code_map; - code_map++; - } - } - return NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -long -SOAP_FMAC2 -soap_code_int(const struct soap_code_map *code_map, const char *str, long other) -{ if (code_map) - { while (code_map->string) - { if (!soap_tag_cmp(str, code_map->string)) /* case insensitive */ - return code_map->code; - code_map++; - } - } - return other; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_code_str(const struct soap_code_map *code_map, long code) -{ if (!code_map) - return NULL; - while (code_map->code != code && code_map->string) - code_map++; - return code_map->string; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -long -SOAP_FMAC2 -soap_code_bits(const struct soap_code_map *code_map, const char *str) -{ register long bits = 0; - if (code_map) - { while (str && *str) - { const struct soap_code_map *p; - for (p = code_map; p->string; p++) - { register size_t n = strlen(p->string); - if (!strncmp(p->string, str, n) && soap_blank(str[n])) - { bits |= p->code; - str += n; - while (*str > 0 && *str <= 32) - str++; - break; - } - } - if (!p->string) - return 0; - } - } - return bits; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_code_list(struct soap *soap, const struct soap_code_map *code_map, long code) -{ register char *t = soap->tmpbuf; - if (code_map) - { while (code_map->string) - { if (code_map->code & code) - { register const char *s = code_map->string; - if (t != soap->tmpbuf) - *t++ = ' '; - while (*s && t < soap->tmpbuf + sizeof(soap->tmpbuf) - 1) - *t++ = *s++; - if (t == soap->tmpbuf + sizeof(soap->tmpbuf) - 1) - break; - } - code_map++; - } - } - *t = '\0'; - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static soap_wchar -soap_char(struct soap *soap) -{ char tmp[8]; - register int i; - register soap_wchar c; - register char *s = tmp; - for (i = 0; i < 7; i++) - { c = soap_get1(soap); - if (c == ';' || (int)c == EOF) - break; - *s++ = (char)c; - } - *s = '\0'; - if (*tmp == '#') - { if (tmp[1] == 'x' || tmp[1] == 'X') - return (soap_wchar)soap_strtol(tmp + 2, NULL, 16); - return (soap_wchar)soap_strtol(tmp + 1, NULL, 10); - } - if (!strcmp(tmp, "lt")) - return '<'; - if (!strcmp(tmp, "gt")) - return '>'; - if (!strcmp(tmp, "amp")) - return '&'; - if (!strcmp(tmp, "quot")) - return '"'; - if (!strcmp(tmp, "apos")) - return '\''; -#ifndef WITH_LEAN - return (soap_wchar)soap_code_int(html_entity_codes, tmp, SOAP_UNKNOWN_CHAR); -#else - return SOAP_UNKNOWN_CHAR; /* use this to represent unknown code */ -#endif -} -#endif - -/******************************************************************************/ -#ifdef WITH_LEAN -#ifndef PALM_1 -soap_wchar -soap_get0(struct soap *soap) -{ if (soap->bufidx >= soap->buflen && soap_recv(soap)) - return EOF; - return (unsigned char)soap->buf[soap->bufidx]; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_LEAN -#ifndef PALM_1 -soap_wchar -soap_get1(struct soap *soap) -{ if (soap->bufidx >= soap->buflen && soap_recv(soap)) - return EOF; - return (unsigned char)soap->buf[soap->bufidx++]; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -soap_wchar -SOAP_FMAC2 -soap_get(struct soap *soap) -{ register soap_wchar c; - c = soap->ahead; - if (c) - { if ((int)c != EOF) - soap->ahead = 0; - } - else - c = soap_get1(soap); - while ((int)c != EOF) - { if (soap->cdata) - { if (c == ']') - { c = soap_get1(soap); - if (c == ']') - { c = soap_get0(soap); - if (c == '>') - { soap->cdata = 0; - soap_get1(soap); - c = soap_get1(soap); - } - else - { soap_unget(soap, ']'); - return ']'; - } - } - else - { soap_revget1(soap); - return ']'; - } - } - else - return c; - } - switch (c) - { case '<': - do c = soap_get1(soap); - while (soap_blank(c)); - if (c == '!' || c == '?' || c == '%') - { register int k = 1; - if (c == '!') - { c = soap_get1(soap); - if (c == '[') - { do c = soap_get1(soap); - while ((int)c != EOF && c != '['); - if ((int)c == EOF) - break; - soap->cdata = 1; - c = soap_get1(soap); - continue; - } - if (c == '-' && (c = soap_get1(soap)) == '-') - { do - { c = soap_get1(soap); - if (c == '-' && (c = soap_get1(soap)) == '-') - break; - } while ((int)c != EOF); - } - } - else if (c == '?') - c = soap_get_pi(soap); - while ((int)c != EOF) - { if (c == '<') - k++; - else if (c == '>') - { if (--k <= 0) - break; - } - c = soap_get1(soap); - } - if ((int)c == EOF) - break; - c = soap_get1(soap); - continue; - } - if (c == '/') - return SOAP_TT; - soap_revget1(soap); - return SOAP_LT; - case '>': - return SOAP_GT; - case '"': - return SOAP_QT; - case '\'': - return SOAP_AP; - case '&': - return soap_char(soap) | 0x80000000; - } - break; - } - return c; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static soap_wchar -soap_get_pi(struct soap *soap) -{ char buf[64]; - register char *s = buf; - register int i = sizeof(buf); - register soap_wchar c = soap_getchar(soap); - /* This is a quick way to parse XML PI and we could use a callback instead to - * enable applications to intercept processing instructions */ - while ((int)c != EOF && c != '?') - { if (--i > 0) - { if (soap_blank(c)) - c = ' '; - *s++ = (char)c; - } - c = soap_getchar(soap); - } - *s = '\0'; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "XML PI \n", buf)); - if (!strncmp(buf, "xml ", 4)) - { s = strstr(buf, " encoding="); - if (s && s[10]) - { if (!soap_tag_cmp(s + 11, "iso-8859-1*") - || !soap_tag_cmp(s + 11, "latin1*")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Switching to latin1 encoding\n")); - soap->mode |= SOAP_ENC_LATIN; - } - else if (!soap_tag_cmp(s + 11, "utf-8*")) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Switching to utf-8 encoding\n")); - soap->mode &= ~SOAP_ENC_LATIN; - } - } - } - if ((int)c != EOF) - c = soap_getchar(soap); - return c; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_move(struct soap *soap, long n) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Moving %ld bytes forward\n", (long)n)); - for (; n > 0; n--) - if ((int)soap_getchar(soap) == EOF) - return SOAP_EOF; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -size_t -SOAP_FMAC2 -soap_tell(struct soap *soap) -{ return soap->count - soap->buflen + soap->bufidx - (soap->ahead != 0); -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_pututf8(struct soap *soap, register unsigned long c) -{ char tmp[16]; - if (c < 0x80 && c > 0) - { *tmp = (char)c; - return soap_send_raw(soap, tmp, 1); - } -#ifndef WITH_LEAN - if (c >= 0x80) - { register char *t = tmp; - if (c < 0x0800) - *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); - else - { if (c < 0x010000) - *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); - else - { if (c < 0x200000) - *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); - else - { if (c < 0x04000000) - *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); - else - { *t++ = (char)(0xFC | ((c >> 30) & 0x01)); - *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); - } - *t++ = (char)(0x80 | (c & 0x3F)); - *t = '\0'; - } -#else - sprintf(tmp, "&#%lu;", c); -#endif - return soap_send(soap, tmp); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -soap_wchar -SOAP_FMAC2 -soap_getutf8(struct soap *soap) -{ register soap_wchar c, c1, c2, c3, c4; - c = soap->ahead; - if (c > 0x7F) - { soap->ahead = 0; - return c; - } - c = soap_get(soap); - if (c < 0x80 || (soap->mode & SOAP_ENC_LATIN)) - return c; - c1 = soap_get1(soap); - if (c1 < 0x80) - { soap_revget1(soap); /* doesn't look like this is UTF8 */ - return c; - } - c1 &= 0x3F; - if (c < 0xE0) - return ((soap_wchar)(c & 0x1F) << 6) | c1; - c2 = (soap_wchar)soap_get1(soap) & 0x3F; - if (c < 0xF0) - return ((soap_wchar)(c & 0x0F) << 12) | (c1 << 6) | c2; - c3 = (soap_wchar)soap_get1(soap) & 0x3F; - if (c < 0xF8) - return ((soap_wchar)(c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3; - c4 = (soap_wchar)soap_get1(soap) & 0x3F; - if (c < 0xFC) - return ((soap_wchar)(c & 0x03) << 24) | (c1 << 18) | (c2 << 12) | (c3 << 6) | c4; - return ((soap_wchar)(c & 0x01) << 30) | (c1 << 24) | (c2 << 18) | (c3 << 12) | (c4 << 6) | (soap_wchar)(soap_get1(soap) & 0x3F); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_puthex(struct soap *soap, const unsigned char *s, int n) -{ char d[2]; - register int i; -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { if (!(soap->dom->data = soap_s2hex(soap, s, NULL, n))) - return soap->error; - return SOAP_OK; - } -#endif - for (i = 0; i < n; i++) - { register int m = *s++; - d[0] = (char)((m >> 4) + (m > 159 ? '7' : '0')); - m &= 0x0F; - d[1] = (char)(m + (m > 9 ? '7' : '0')); - if (soap_send_raw(soap, d, 2)) - return soap->error; - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -unsigned char* -SOAP_FMAC2 -soap_gethex(struct soap *soap, int *n) -{ -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { soap->dom->data = soap_string_in(soap, 0, -1, -1); - return (unsigned char*)soap_hex2s(soap, soap->dom->data, NULL, 0, n); - } -#endif -#ifdef WITH_FAST - soap->labidx = 0; - for (;;) - { register char *s; - register size_t i, k; - if (soap_append_lab(soap, NULL, 0)) - return NULL; - s = soap->labbuf + soap->labidx; - k = soap->lablen - soap->labidx; - soap->labidx = soap->lablen; - for (i = 0; i < k; i++) - { register char d1, d2; - register soap_wchar c; - c = soap_get(soap); - if (soap_isxdigit(c)) - { d1 = (char)c; - c = soap_get(soap); - if (soap_isxdigit(c)) - d2 = (char)c; - else - { soap->error = SOAP_TYPE; - return NULL; - } - } - else - { unsigned char *p; - soap_unget(soap, c); - if (n) - *n = (int)(soap->lablen + i - k); - p = (unsigned char*)soap_malloc(soap, soap->lablen + i - k); - if (p) - memcpy(p, soap->labbuf, soap->lablen + i - k); - return p; - } - *s++ = ((d1 >= 'A' ? (d1 & 0x7) + 9 : d1 - '0') << 4) + (d2 >= 'A' ? (d2 & 0x7) + 9 : d2 - '0'); - } - } -#else - if (soap_new_block(soap) == NULL) - return NULL; - for (;;) - { register int i; - register char *s = (char*)soap_push_block(soap, NULL, SOAP_BLKLEN); - if (!s) - { soap_end_block(soap, NULL); - return NULL; - } - for (i = 0; i < SOAP_BLKLEN; i++) - { register char d1, d2; - register soap_wchar c = soap_get(soap); - if (soap_isxdigit(c)) - { d1 = (char)c; - c = soap_get(soap); - if (soap_isxdigit(c)) - d2 = (char)c; - else - { soap_end_block(soap, NULL); - soap->error = SOAP_TYPE; - return NULL; - } - } - else - { unsigned char *p; - soap_unget(soap, c); - if (n) - *n = (int)soap_size_block(soap, NULL, i); - p = (unsigned char*)soap_save_block(soap, NULL, 0); - return p; - } - *s++ = ((d1 >= 'A' ? (d1 & 0x7) + 9 : d1 - '0') << 4) + (d2 >= 'A' ? (d2 & 0x7) + 9 : d2 - '0'); - } - } -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putbase64(struct soap *soap, const unsigned char *s, int n) -{ register int i; - register unsigned long m; - char d[4]; - if (!s) - return SOAP_OK; -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { if (!(soap->dom->data = soap_s2base64(soap, s, NULL, n))) - return soap->error; - return SOAP_OK; - } -#endif - for (; n > 2; n -= 3, s += 3) - { m = s[0]; - m = (m << 8) | s[1]; - m = (m << 8) | s[2]; - for (i = 4; i > 0; m >>= 6) - d[--i] = soap_base64o[m & 0x3F]; - if (soap_send_raw(soap, d, 4)) - return soap->error; - } - if (n > 0) - { m = 0; - for (i = 0; i < n; i++) - m = (m << 8) | *s++; - for (; i < 3; i++) - m <<= 8; - for (i++; i > 0; m >>= 6) - d[--i] = soap_base64o[m & 0x3F]; - for (i = 3; i > n; i--) - d[i] = '='; - if (soap_send_raw(soap, d, 4)) - return soap->error; - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -unsigned char* -SOAP_FMAC2 -soap_getbase64(struct soap *soap, int *n, int malloc_flag) -{ -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { soap->dom->data = soap_string_in(soap, 0, -1, -1); - return (unsigned char*)soap_base642s(soap, soap->dom->data, NULL, 0, n); - } -#endif -#ifdef WITH_FAST - soap->labidx = 0; - for (;;) - { register size_t i, k; - register char *s; - if (soap_append_lab(soap, NULL, 2)) - return NULL; - s = soap->labbuf + soap->labidx; - k = soap->lablen - soap->labidx; - soap->labidx = 3 * (soap->lablen / 3); - if (!s) - return NULL; - if (k > 2) - { for (i = 0; i < k - 2; i += 3) - { register unsigned long m = 0; - register int j = 0; - do - { register soap_wchar c = soap_get(soap); - if (c == '=' || c < 0) - { unsigned char *p; - switch (j) - { case 2: - *s++ = (char)((m >> 4) & 0xFF); - i++; - break; - case 3: - *s++ = (char)((m >> 10) & 0xFF); - *s++ = (char)((m >> 2) & 0xFF); - i += 2; - } - if (n) - *n = (int)(soap->lablen + i - k); - p = (unsigned char*)soap_malloc(soap, soap->lablen + i - k); - if (p) - memcpy(p, soap->labbuf, soap->lablen + i - k); - if (c >= 0) - { while ((int)((c = soap_get(soap)) != EOF) && c != SOAP_LT && c != SOAP_TT) - ; - } - soap_unget(soap, c); - return p; - } - c -= '+'; - if (c >= 0 && c <= 79) - { register int b = soap_base64i[c]; - if (b >= 64) - { soap->error = SOAP_TYPE; - return NULL; - } - m = (m << 6) + b; - j++; - } - else if (!soap_blank(c + '+')) - { soap->error = SOAP_TYPE; - return NULL; - } - } while (j < 4); - *s++ = (char)((m >> 16) & 0xFF); - *s++ = (char)((m >> 8) & 0xFF); - *s++ = (char)(m & 0xFF); - } - } - } -#else - if (soap_new_block(soap) == NULL) - return NULL; - for (;;) - { register int i; - register char *s = (char*)soap_push_block(soap, NULL, 3 * SOAP_BLKLEN); /* must be multiple of 3 */ - if (!s) - { soap_end_block(soap, NULL); - return NULL; - } - for (i = 0; i < SOAP_BLKLEN; i++) - { register unsigned long m = 0; - register int j = 0; - do - { register soap_wchar c = soap_get(soap); - if (c == '=' || c < 0) - { unsigned char *p; - i *= 3; - switch (j) - { case 2: - *s++ = (char)((m >> 4) & 0xFF); - i++; - break; - case 3: - *s++ = (char)((m >> 10) & 0xFF); - *s++ = (char)((m >> 2) & 0xFF); - i += 2; - } - if (n) - *n = (int)soap_size_block(soap, NULL, i); - p = (unsigned char*)soap_save_block(soap, NULL, 0); - if (c >= 0) - { while ((int)((c = soap_get(soap)) != EOF) && c != SOAP_LT && c != SOAP_TT) - ; - } - soap_unget(soap, c); - return p; - } - c -= '+'; - if (c >= 0 && c <= 79) - { int b = soap_base64i[c]; - if (b >= 64) - { soap->error = SOAP_TYPE; - return NULL; - } - m = (m << 6) + b; - j++; - } - else if (!soap_blank(c)) - { soap->error = SOAP_TYPE; - return NULL; - } - } while (j < 4); - *s++ = (char)((m >> 16) & 0xFF); - *s++ = (char)((m >> 8) & 0xFF); - *s++ = (char)(m & 0xFF); - } - } -#endif -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_xop_forward(struct soap *soap, unsigned char **ptr, int *size, char **id, char **type, char **options) -{ /* Check MTOM xop:Include element (within hex/base64Binary) */ - /* TODO: this code to be obsoleted with new import/xop.h conventions */ - int body = soap->body; /* should save type too? */ - if (!soap_peek_element(soap)) - { if (!soap_element_begin_in(soap, "xop:Include", 0, NULL) && *soap->href) - { if (soap_dime_forward(soap, ptr, size, id, type, options)) - return soap->error; - } - if (soap->body && soap_element_end_in(soap, NULL)) - return soap->error; - } - soap->body = body; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_dime_forward(struct soap *soap, unsigned char **ptr, int *size, char **id, char **type, char **options) -{ struct soap_xlist *xp; - *ptr = NULL; - *size = 0; - *id = NULL; - *type = NULL; - *options = NULL; - if (!*soap->href) - return SOAP_OK; - *id = soap_strdup(soap, soap->href); - xp = (struct soap_xlist*)SOAP_MALLOC(soap, sizeof(struct soap_xlist)); - if (!xp) - return soap->error = SOAP_EOM; - xp->next = soap->xlist; - xp->ptr = ptr; - xp->size = size; - xp->id = *id; - xp->type = type; - xp->options = options; - soap->xlist = xp; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_strdup(struct soap *soap, const char *s) -{ char *t = NULL; - if (s && (t = (char*)soap_malloc(soap, strlen(s) + 1))) - strcpy(t, s); - return t; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -wchar_t * -SOAP_FMAC2 -soap_wstrdup(struct soap *soap, const wchar_t *s) -{ wchar_t *t = NULL; - if (s) - { size_t n = 0; - while (s[n]) - n++; - if ((t = (wchar_t*)soap_malloc(soap, sizeof(wchar_t)*(n+1)))) - memcpy(t, s, sizeof(wchar_t)*(n+1)); - } - return t; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -struct soap_blist* -SOAP_FMAC2 -soap_new_block(struct soap *soap) -{ struct soap_blist *p; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New block sequence (prev=%p)\n", soap->blist)); - if (!(p = (struct soap_blist*)SOAP_MALLOC(soap, sizeof(struct soap_blist)))) - { soap->error = SOAP_EOM; - return NULL; - } - p->next = soap->blist; - p->ptr = NULL; - p->size = 0; - soap->blist = p; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void* -SOAP_FMAC2 -soap_push_block(struct soap *soap, struct soap_blist *b, size_t n) -{ char *p; - if (!b) - b = soap->blist; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push block of %u bytes (%u bytes total)\n", (unsigned int)n, (unsigned int)b->size + (unsigned int)n)); - if (!(p = (char*)SOAP_MALLOC(soap, n + sizeof(char*) + sizeof(size_t)))) - { soap->error = SOAP_EOM; - return NULL; - } - *(char**)p = b->ptr; - *(size_t*)(p + sizeof(char*)) = n; - b->ptr = p; - b->size += n; - return p + sizeof(char*) + sizeof(size_t); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_pop_block(struct soap *soap, struct soap_blist *b) -{ char *p; - if (!b) - b = soap->blist; - if (!b->ptr) - return; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Pop block\n")); - p = b->ptr; - b->size -= *(size_t*)(p + sizeof(char*)); - b->ptr = *(char**)p; - SOAP_FREE(soap, p); -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -static void -soap_update_ptrs(struct soap *soap, char *start, char *end, char *p1, char *p2) -{ int i; - register struct soap_ilist *ip = NULL; - register struct soap_flist *fp = NULL; -#ifndef WITH_LEANER - register struct soap_xlist *xp = NULL; -#endif - register void *p, **q; - for (i = 0; i < SOAP_IDHASH; i++) - { for (ip = soap->iht[i]; ip; ip = ip->next) - { if (ip->ptr && (char*)ip->ptr >= start && (char*)ip->ptr < end) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update id='%s' %p -> %p\n", ip->id, ip->ptr, (char*)ip->ptr + (p1-p2))); - ip->ptr = (char*)ip->ptr + (p1-p2); - } - for (q = &ip->link; q; q = (void**)p) - { p = *q; - if (p && (char*)p >= start && (char*)p < end) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Link update id='%s' %p\n", ip->id, p)); - *q = (char*)p + (p1-p2); - } - } - for (q = &ip->copy; q; q = (void**)p) - { p = *q; - if (p && (char*)p >= start && (char*)p < end) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy chain update id='%s' %p\n", ip->id, p)); - *q = (char*)p + (p1-p2); - } - } - for (fp = ip->flist; fp; fp = fp->next) - { if ((char*)fp->ptr >= start && (char*)fp->ptr < end) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy list update id='%s' %p\n", ip->id, fp)); - fp->ptr = (char*)fp->ptr + (p1-p2); - } - } - } - } -#ifndef WITH_LEANER - for (xp = soap->xlist; xp; xp = xp->next) - { if (xp->ptr && (char*)xp->ptr >= start && (char*)xp->ptr < end) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update id='%s' %p -> %p\n", xp->id?xp->id:SOAP_STR_EOS, xp->ptr, (char*)xp->ptr + (p1-p2))); - xp->ptr = (unsigned char**)((char*)xp->ptr + (p1-p2)); - xp->size = (int*)((char*)xp->size + (p1-p2)); - xp->type = (char**)((char*)xp->type + (p1-p2)); - xp->options = (char**)((char*)xp->options + (p1-p2)); - } - } -#endif -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -static int -soap_has_copies(struct soap *soap, register const char *start, register const char *end) -{ register int i; - register struct soap_ilist *ip = NULL; - register struct soap_flist *fp = NULL; - register const char *p; - for (i = 0; i < SOAP_IDHASH; i++) - { for (ip = soap->iht[i]; ip; ip = ip->next) - { for (p = (const char*)ip->copy; p; p = *(const char**)p) - if (p >= start && p < end) - return SOAP_ERR; - for (fp = ip->flist; fp; fp = fp->next) - if ((const char*)fp->ptr >= start && (const char*)fp->ptr < end) - return SOAP_ERR; - } - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_resolve(struct soap *soap) -{ register int i; - register struct soap_ilist *ip = NULL; - register struct soap_flist *fp = NULL; - short flag; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving forwarded data\n")); - for (i = 0; i < SOAP_IDHASH; i++) - { for (ip = soap->iht[i]; ip; ip = ip->next) - { if (ip->ptr) - { register void *p, **q, *r; - q = (void**)ip->link; - ip->link = NULL; - r = ip->ptr; - DBGLOG(TEST, if (q) SOAP_MESSAGE(fdebug, "Traversing link chain to resolve id='%s'\n", ip->id)); - while (q) - { p = *q; - *q = r; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "... link %p -> %p\n", q, r)); - q = (void**)p; - } - } - else if (*ip->id == '#') - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Missing data for id='%s'\n", ip->id)); - /* Oracle customization */ - strncpy(soap->id, ip->id + 1, sizeof(soap->id) - 1); - soap->id[sizeof(soap->id) - 1] = '\0'; - return soap->error = SOAP_MISSING_ID; - } - } - } - do - { flag = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolution phase\n")); - for (i = 0; i < SOAP_IDHASH; i++) - { for (ip = soap->iht[i]; ip; ip = ip->next) - { if (ip->ptr && !soap_has_copies(soap, (const char*)ip->ptr, (const char*)ip->ptr + ip->size)) - { if (ip->copy) - { register void *p, **q = (void**)ip->copy; - DBGLOG(TEST, if (q) SOAP_MESSAGE(fdebug, "Traversing copy chain to resolve id='%s'\n", ip->id)); - ip->copy = NULL; - do - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... copy %p -> %p (%u bytes)\n", ip->ptr, q, (unsigned int)ip->size)); - p = *q; - memcpy(q, ip->ptr, ip->size); - q = (void**)p; - } while (q); - flag = 1; - } - for (fp = ip->flist; fp; fp = ip->flist) - { register unsigned int k = fp->level; - register void *p = ip->ptr; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving forwarded data type=%d location=%p level=%u,%u id='%s'\n", ip->type, p, ip->level, fp->level, ip->id)); - while (ip->level < k) - { register void **q = (void**)soap_malloc(soap, sizeof(void*)); - if (!q) - return soap->error; - *q = p; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level, new location=%p holds=%p...\n", q, *q)); - p = (void*)q; - k--; - } - if (fp->fcopy) - fp->fcopy(soap, ip->type, fp->type, fp->ptr, fp->len, p, ip->size); - else - soap_fcopy(soap, ip->type, fp->type, fp->ptr, fp->len, p, ip->size); - ip->flist = fp->next; - SOAP_FREE(soap, fp); - flag = 1; - } - } - } - } - } while (flag); -#ifdef SOAP_DEBUG - for (i = 0; i < SOAP_IDHASH; i++) - { for (ip = soap->iht[i]; ip; ip = ip->next) - { if (ip->copy || ip->flist) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolution error: forwarded data for id='%s' could not be propagated, please report this problem to the developers\n", ip->id)); - } - } - } -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolution done\n")); - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -size_t -SOAP_FMAC2 -soap_size_block(struct soap *soap, struct soap_blist *b, size_t n) -{ if (!b) - b = soap->blist; - if (b->ptr) - { b->size -= *(size_t*)(b->ptr + sizeof(char*)) - n; - *(size_t*)(b->ptr + sizeof(char*)) = n; - } - return b->size; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_first_block(struct soap *soap, struct soap_blist *b) -{ char *p, *q, *r; - if (!b) - b = soap->blist; - p = b->ptr; - if (!p) - return NULL; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "First block\n")); - r = NULL; - do - { q = *(char**)p; - *(char**)p = r; - r = p; - p = q; - } while (p); - b->ptr = r; - return r + sizeof(char*) + sizeof(size_t); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_next_block(struct soap *soap, struct soap_blist *b) -{ char *p; - if (!b) - b = soap->blist; - p = b->ptr; - if (p) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Next block\n")); - b->ptr = *(char**)p; - SOAP_FREE(soap, p); - if (b->ptr) - return b->ptr + sizeof(char*) + sizeof(size_t); - } - return NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -size_t -SOAP_FMAC2 -soap_block_size(struct soap *soap, struct soap_blist *b) -{ if (!b) - b = soap->blist; - return *(size_t*)(b->ptr + sizeof(char*)); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_end_block(struct soap *soap, struct soap_blist *b) -{ char *p, *q; - if (!b) - b = soap->blist; - if (b) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of block sequence, free all remaining blocks\n")); - for (p = b->ptr; p; p = q) - { q = *(char**)p; - SOAP_FREE(soap, p); - } - if (soap->blist == b) - soap->blist = b->next; - else - { struct soap_blist *bp; - for (bp = soap->blist; bp; bp = bp->next) - { if (bp->next == b) - { bp->next = b->next; - break; - } - } - } - SOAP_FREE(soap, b); - } - DBGLOG(TEST, if (soap->blist) SOAP_MESSAGE(fdebug, "Restore previous block sequence\n")); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_save_block(struct soap *soap, struct soap_blist *b, char *p, int flag) -{ register size_t n; - register char *q, *s; - if (!b) - b = soap->blist; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Save all blocks in contiguous memory space of %u bytes (%p->%p)\n", (unsigned int)b->size, b->ptr, p)); - if (b->size) - { if (!p) - p = (char*)soap_malloc(soap, b->size); - if (p) - { for (s = p, q = soap_first_block(soap, b); q; q = soap_next_block(soap, b)) - { n = soap_block_size(soap, b); -#ifndef WITH_NOIDREF - if (flag) - soap_update_ptrs(soap, q, q + n, s, q); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy %u bytes from %p to %p\n", (unsigned int)n, q, s)); - memcpy(s, q, n); - s += n; - } - } - else - soap->error = SOAP_EOM; - } - soap_end_block(soap, b); - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_putsize(struct soap *soap, const char *type, int size) -{ return soap_putsizes(soap, type, &size, 1); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_putsizes(struct soap *soap, const char *type, const int *size, int dim) -{ return soap_putsizesoffsets(soap, type, size, NULL, dim); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_putsizesoffsets(struct soap *soap, const char *type, const int *size, const int *offset, int dim) -{ int i; - if (!type) - return NULL; - if (soap->version == 2) - { sprintf(soap->type, "%s[%d", type, size[0]); - for (i = 1; i < dim; i++) - sprintf(soap->type + strlen(soap->type), " %d", size[i]); - } - else - { if (offset) - { sprintf(soap->type, "%s[%d", type, size[0] + offset[0]); - for (i = 1; i < dim; i++) - sprintf(soap->type + strlen(soap->type), ",%d", size[i] + offset[i]); - } - else - { sprintf(soap->type, "%s[%d", type, size[0]); - for (i = 1; i < dim; i++) - sprintf(soap->type + strlen(soap->type), ",%d", size[i]); - } - strcat(soap->type, "]"); - } - return soap->type; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_putoffset(struct soap *soap, int offset) -{ return soap_putoffsets(soap, &offset, 1); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_putoffsets(struct soap *soap, const int *offset, int dim) -{ register int i; - sprintf(soap->arrayOffset, "[%d", offset[0]); - for (i = 1; i < dim; i++) - sprintf(soap->arrayOffset + strlen(soap->arrayOffset), ",%d", offset[i]); - strcat(soap->arrayOffset, "]"); - return soap->arrayOffset; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_size(const int *size, int dim) -{ register int i, n = size[0]; - for (i = 1; i < dim; i++) - n *= size[i]; - return n; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getoffsets(const char *attr, const int *size, int *offset, int dim) -{ register int i, j = 0; - if (offset) - for (i = 0; i < dim && attr && *attr; i++) - { attr++; - j *= size[i]; - j += offset[i] = (int)soap_strtol(attr, NULL, 10); - attr = strchr(attr, ','); - } - else - for (i = 0; i < dim && attr && *attr; i++) - { attr++; - j *= size[i]; - j += (int)soap_strtol(attr, NULL, 10); - attr = strchr(attr, ','); - } - return j; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getsize(const char *attr1, const char *attr2, int *j) -{ register int n, k; - char *s; - *j = 0; - if (!*attr1) - return -1; - if (*attr1 == '[') - attr1++; - n = 1; - for (;;) - { k = (int)soap_strtol(attr1, &s, 10); - n *= k; - if (k < 0 || n > SOAP_MAXARRAYSIZE || s == attr1) - return -1; - attr1 = strchr(s, ','); - if (!attr1) - attr1 = strchr(s, ' '); - if (attr2 && *attr2) - { attr2++; - *j *= k; - k = (int)soap_strtol(attr2, &s, 10); - *j += k; - if (k < 0) - return -1; - attr2 = s; - } - if (!attr1) - break; - attr1++; - } - return n - *j; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getsizes(const char *attr, int *size, int dim) -{ register int i, k, n; - if (!*attr) - return -1; - i = (int)strlen(attr); - n = 1; - do - { for (i = i-1; i >= 0; i--) - if (attr[i] == '[' || attr[i] == ',' || attr[i] == ' ') - break; - k = (int)soap_strtol(attr + i + 1, NULL, 10); - n *= size[--dim] = k; - if (k < 0 || n > SOAP_MAXARRAYSIZE) - return -1; - } while (i >= 0 && attr[i] != '['); - return n; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getposition(const char *attr, int *pos) -{ register int i, n; - if (!*attr) - return -1; - n = 0; - i = 1; - do - { pos[n++] = (int)soap_strtol(attr + i, NULL, 10); - while (attr[i] && attr[i] != ',' && attr[i] != ']') - i++; - if (attr[i] == ',') - i++; - } while (n < SOAP_MAXDIMS && attr[i] && attr[i] != ']'); - return n; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -struct soap_nlist * -SOAP_FMAC2 -soap_push_namespace(struct soap *soap, const char *id, const char *ns) -{ register struct soap_nlist *np; - register struct Namespace *p; - register short i = -1; - register size_t n, k; - n = strlen(id); - k = strlen(ns) + 1; - p = soap->local_namespaces; - if (p) - { for (i = 0; p->id; p++, i++) - { if (p->ns && !strcmp(ns, p->ns)) - { if (p->out) - { SOAP_FREE(soap, p->out); - p->out = NULL; - } - break; - } - if (p->out) - { if (!strcmp(ns, p->out)) - break; - } - else if (p->in) - { if (!soap_tag_cmp(ns, p->in)) - { if ((p->out = (char*)SOAP_MALLOC(soap, k))) - strcpy(p->out, ns); - break; - } - } - } - if (!p || !p->id) - i = -1; - } - if (i >= 0) - k = 0; - np = (struct soap_nlist*)SOAP_MALLOC(soap, sizeof(struct soap_nlist) + n + k); - if (!np) - { soap->error = SOAP_EOM; - return NULL; - } - np->next = soap->nlist; - soap->nlist = np; - np->level = soap->level; - np->index = i; - strcpy(np->id, id); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push namespace binding (level=%u) '%s' '%s'\n", soap->level, id, ns)); - if (i < 0) - { np->ns = strcpy(np->id + n + 1, ns); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push NOT OK: no match found for '%s' in namespace mapping table (added to stack anyway)\n", ns)); - } - else - { np->ns = NULL; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push OK ('%s' matches '%s' in namespace table)\n", id, p->id)); - } - return np; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_pop_namespace(struct soap *soap) -{ register struct soap_nlist *np, *nq; - for (np = soap->nlist; np && np->level >= soap->level; np = nq) - { nq = np->next; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Pop namespace binding (level=%u) '%s'\n", soap->level, np->id)); - SOAP_FREE(soap, np); - } - soap->nlist = np; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_match_namespace(struct soap *soap, const char *id1, const char *id2, size_t n1, size_t n2) -{ register struct soap_nlist *np = soap->nlist; - while (np && (strncmp(np->id, id1, n1) || np->id[n1])) - np = np->next; - if (np) - { if (!(soap->mode & SOAP_XML_IGNORENS)) - if (np->index < 0 - || (soap->local_namespaces[np->index].id - && (strncmp(soap->local_namespaces[np->index].id, id2, n2) - || soap->local_namespaces[np->index].id[n2]))) - return SOAP_NAMESPACE; - return SOAP_OK; - } - if (n1 == 0) - return SOAP_NAMESPACE; - if ((n1 == 3 && n1 == n2 && !strncmp(id1, "xml", 3) && !strncmp(id1, id2, 3)) - || (soap->mode & SOAP_XML_IGNORENS)) - return SOAP_OK; - return soap->error = SOAP_SYNTAX_ERROR; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_current_namespace(struct soap *soap, const char *tag) -{ register struct soap_nlist *np; - register const char *s; - if (!tag || !strncmp(tag, "xml", 3)) - return NULL; - np = soap->nlist; - if (!(s = strchr(tag, ':'))) - { while (np && *np->id) /* find default namespace, if present */ - np = np->next; - } - else - { while (np && (strncmp(np->id, tag, s - tag) || np->id[s - tag])) - np = np->next; - if (!np) - soap->error = SOAP_NAMESPACE; - } - if (np) - { if (np->index >= 0) - return soap->namespaces[np->index].ns; - if (np->ns) - return soap_strdup(soap, np->ns); - } - return NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_tag_cmp(const char *s, const char *t) -{ for (;;) - { register int c1 = *s; - register int c2 = *t; - if (!c1 || c1 == '"') - break; - if (c2 != '-') - { if (c1 != c2) - { if (c1 >= 'A' && c1 <= 'Z') - c1 += 'a' - 'A'; - if (c2 >= 'A' && c2 <= 'Z') - c2 += 'a' - 'A'; - } - if (c1 != c2) - { if (c2 != '*') - return 1; - c2 = *++t; - if (!c2) - return 0; - if (c2 >= 'A' && c2 <= 'Z') - c2 += 'a' - 'A'; - for (;;) - { c1 = *s; - if (!c1 || c1 == '"') - break; - if (c1 >= 'A' && c1 <= 'Z') - c1 += 'a' - 'A'; - if (c1 == c2 && !soap_tag_cmp(s + 1, t + 1)) - return 0; - s++; - } - break; - } - } - s++; - t++; - } - if (*t == '*' && !t[1]) - return 0; - return *t; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_match_tag(struct soap *soap, const char *tag1, const char *tag2) -{ register const char *s, *t; - register int err; - if (!tag1 || !tag2 || !*tag2) - return SOAP_OK; - s = strchr(tag1, ':'); - t = strchr(tag2, ':'); - if (t) - { if (s) - { if (t[1] && SOAP_STRCMP(s + 1, t + 1)) - return SOAP_TAG_MISMATCH; - if (t != tag2 && (err = soap_match_namespace(soap, tag1, tag2, s - tag1, t - tag2))) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2)); - if (err == SOAP_NAMESPACE) - return SOAP_TAG_MISMATCH; - return err; - } - } - else if (SOAP_STRCMP(tag1, t + 1)) - { return SOAP_TAG_MISMATCH; - } - else if (t != tag2 && (err = soap_match_namespace(soap, tag1, tag2, 0, t - tag2))) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2)); - if (err == SOAP_NAMESPACE) - return SOAP_TAG_MISMATCH; - return err; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags and (default) namespaces match: '%s' '%s'\n", tag1, tag2)); - return SOAP_OK; - } - if (s) - { if (SOAP_STRCMP(s + 1, tag2)) - return SOAP_TAG_MISMATCH; - } - else if (SOAP_STRCMP(tag1, tag2)) - return SOAP_TAG_MISMATCH; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags match: '%s' '%s'\n", tag1, tag2)); - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_match_array(struct soap *soap, const char *type) -{ if (*soap->arrayType) - if (soap_match_tag(soap, soap->arrayType, type) - && soap_match_tag(soap, soap->arrayType, "xsd:anyType") - && soap_match_tag(soap, soap->arrayType, "xsd:ur-type") - ) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array type mismatch: '%s' '%s'\n", soap->arrayType, type)); - return SOAP_TAG_MISMATCH; - } - return SOAP_OK; -} -#endif - -/******************************************************************************\ - * - * SSL/TLS - * -\******************************************************************************/ - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_rand() -{ unsigned char buf[4]; - if (!soap_ssl_init_done) - soap_ssl_init(); - RAND_pseudo_bytes(buf, 4); - return *(int*)buf; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid) -{ int err; - soap->keyfile = keyfile; - soap->password = password; - soap->cafile = cafile; - soap->capath = capath; - soap->crlfile = NULL; - soap->dhfile = dhfile; - soap->randfile = randfile; - soap->ssl_flags = flags | (dhfile == NULL ? SOAP_SSL_RSA : 0); - if (!(err = soap->fsslauth(soap))) - { if (sid) - SSL_CTX_set_session_id_context(soap->ctx, (unsigned char*)sid, (unsigned int)strlen(sid)); - else - SSL_CTX_set_session_cache_mode(soap->ctx, SSL_SESS_CACHE_OFF); - } - return err; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *randfile) -{ soap->keyfile = keyfile; - soap->password = password; - soap->cafile = cafile; - soap->capath = capath; - soap->dhfile = NULL; - soap->ssl_flags = flags; - soap->randfile = randfile; - soap->fsslverify = (flags & SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE) == 0 ? ssl_verify_callback : ssl_verify_callback_allow_expired_certificate; - return soap->fsslauth(soap); -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_ssl_init() -{ /* Note: for MT systems, the main program MUST call soap_ssl_init() before any threads are started */ - if (!soap_ssl_init_done) - { soap_ssl_init_done = 1; - SSL_library_init(); -#ifndef WITH_LEAN - SSL_load_error_strings(); -#endif - if (!RAND_load_file("/dev/urandom", 1024)) - { char buf[1024]; - RAND_seed(buf, sizeof(buf)); - while (!RAND_status()) - { int r = rand(); - RAND_seed(&r, sizeof(int)); - } - } - } -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_1 -SOAP_FMAC1 -const char * -SOAP_FMAC2 -soap_ssl_error(struct soap *soap, int ret) -{ int err = SSL_get_error(soap->ssl, ret); - const char *msg = soap_code_str(h_ssl_error_codes, err); - size_t msgbufsize = sizeof(soap->msgbuf); - if (msg) - { /* Oracle customization */ - strncpy(soap->msgbuf, msg, msgbufsize - 1); - soap->msgbuf[msgbufsize - 1] = '\0'; - } - else - return ERR_error_string(err, soap->msgbuf); - if (ERR_peek_error()) - { unsigned long r; - /* Oracle customization */ - if (strlen(soap->msgbuf) < (msgbufsize-1)) - strcat(soap->msgbuf, "\n"); - else - soap->msgbuf[msgbufsize - 2] = '\n'; - while ((r = ERR_get_error())) - ERR_error_string_n(r, soap->msgbuf + strlen(soap->msgbuf), sizeof(soap->msgbuf) - strlen(soap->msgbuf)); - } - else - { switch (ret) - { case 0: - { - /* Oracle customization -- display SSL error code and string at the end */ - int myerrno = errno; - unsigned long ec = ERR_get_error(); - sprintf(soap->msgbuf, - "EOF was observed that violates the protocol. The client probably provided invalid authentication information. SSL error code is %s. ", - msg); - if (ec != 0) - { - /* display the next error string in the error queue */ - ERR_error_string_n(ec, soap->msgbuf + strlen(soap->msgbuf), - sizeof(soap->msgbuf) - strlen(soap->msgbuf)); - if (sizeof(soap->msgbuf) - strlen(soap->msgbuf) > 2) - { - strcat(soap->msgbuf, ". "); - } - } - if (myerrno != 0) - { - /* display system error too */ - char *mystrerror = strerror(myerrno); - if (strlen(mystrerror) - < (sizeof(soap->msgbuf) - strlen(soap->msgbuf))) - { - strncat(soap->msgbuf + strlen(soap->msgbuf), mystrerror, - strlen(mystrerror)); - } - else - { - strncat(soap->msgbuf + strlen(soap->msgbuf), mystrerror, - (sizeof(soap->msgbuf) - strlen(soap->msgbuf))); - } - soap->msgbuf[sizeof(soap->msgbuf) - 1] = '\0'; - } - } - break; - case -1: - sprintf(soap->msgbuf, "Error observed by underlying BIO: %s", strerror(errno)); - break; - } - } - return soap->msgbuf; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_1 -static int -ssl_password(char *buf, int num, int rwflag, void *userdata) -{ if (num < (int)strlen((char*)userdata) + 1) - return 0; - return (int)strlen(strcpy(buf, (char*)userdata)); -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_1 -/* -static int -*/ -int -ssl_auth_init(struct soap *soap) -{ long flags; - int mode; - if (!soap_ssl_init_done) - soap_ssl_init(); - ERR_clear_error(); - if (!soap->ctx) - { if (!(soap->ctx = SSL_CTX_new(SSLv23_method()))) - return soap_set_receiver_error(soap, "SSL error", "Can't setup context", SOAP_SSL_ERROR); - /* The following alters the behavior of SSL read/write: */ -#if 0 - SSL_CTX_set_mode(soap->ctx, SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_AUTO_RETRY); -#endif - } - // - // Oracle customization - // - // added SSL_CTX_set_cipher_list call to restrict the cipher suite to RSA-2048/AES - // TLS_RSA_WITH_AES_256_CBC_SHA is defined in RFC 3268 - // also see http://www.openssl.org/docs/apps/ciphers.html - // - if (!SSL_CTX_set_cipher_list(soap->ctx, "AES256-SHA")) - return soap_set_receiver_error(soap, "SSL error", "Cannot set cipher suite", SOAP_SSL_ERROR); - if (soap->randfile) - { if (!RAND_load_file(soap->randfile, -1)) - return soap_set_receiver_error(soap, "SSL error", "Can't load randomness", SOAP_SSL_ERROR); - } - if (soap->cafile || soap->capath) - { if (!SSL_CTX_load_verify_locations(soap->ctx, soap->cafile, soap->capath)) - return soap_set_receiver_error(soap, "SSL error", "Can't read CA file and directory", SOAP_SSL_ERROR); - if (soap->cafile && (soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) - SSL_CTX_set_client_CA_list(soap->ctx, SSL_load_client_CA_file(soap->cafile)); - } - if (!(soap->ssl_flags & SOAP_SSL_NO_DEFAULT_CA_PATH)) - { if (!SSL_CTX_set_default_verify_paths(soap->ctx)) - return soap_set_receiver_error(soap, "SSL error", "Can't read default CA file and/or directory", SOAP_SSL_ERROR); - } -/* This code assumes a typical scenario, see alternative code below */ - if (soap->keyfile) - { if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile)) - return soap_set_receiver_error(soap, "SSL error", "Can't read certificate key file", SOAP_SSL_ERROR); - if (soap->password) - { SSL_CTX_set_default_passwd_cb_userdata(soap->ctx, (void*)soap->password); - SSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); - } - if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) - return soap_set_receiver_error(soap, "SSL error", "Can't read key file", SOAP_SSL_ERROR); - } -/* Suggested alternative approach to check the key file for certs (cafile=NULL):*/ -#if 0 - if (soap->password) - { SSL_CTX_set_default_passwd_cb_userdata(soap->ctx, (void*)soap->password); - SSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); - } - if (!soap->cafile || !SSL_CTX_use_certificate_chain_file(soap->ctx, soap->cafile)) - { if (soap->keyfile) - { if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile)) - return soap_set_receiver_error(soap, "SSL error", "Can't read certificate or key file", SOAP_SSL_ERROR); - if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) - return soap_set_receiver_error(soap, "SSL error", "Can't read key file", SOAP_SSL_ERROR); - } - } -#endif - if ((soap->ssl_flags & SOAP_SSL_RSA)) - { - /* - Oracle customization for OpenSSL 0.9.8 removal of deprecated function usage: RSA_generate_key - */ -#ifdef OPENSSL_NO_DEPRECATED - RSA *rsa = RSA_new(); - if (!rsa) - { - return soap_set_receiver_error(soap, "SSL error", "Can't allocate RSA struct", SOAP_SSL_ERROR); - } - - BIGNUM *e = BN_new(); - if (!e) - { - RSA_free(rsa); - return soap_set_receiver_error(soap, "SSL error", "Can't allocate BIGNUM", SOAP_SSL_ERROR); - } - if (!BN_set_word(e, RSA_F4 )) - { - RSA_free(rsa); - BN_free(e); - return soap_set_receiver_error(soap, "SSL error", "Can't set BIGNUM value", SOAP_SSL_ERROR); - } - -#if OPENSSL_VERSION_NUMBER > 0x00908000L - if (!RSA_generate_key_ex(rsa, 1024, e, NULL)) -#else - if (( rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL)) == NULL ) -#endif - { - RSA_free(rsa); - BN_free(e); - return soap_set_receiver_error(soap, "SSL error", "Can't set RSA key", SOAP_SSL_ERROR); - } - -#else - RSA *rsa = RSA_generate_key(1024, RSA_F4, NULL, NULL); -#endif - if (!SSL_CTX_set_tmp_rsa(soap->ctx, rsa)) - { if (rsa) - RSA_free(rsa); -/* - Oracle customization for OpenSSL 0.9.8 removal of deprecated function usage: RSA_generate_key -*/ -#ifdef OPENSSL_NO_DEPRECATED - BN_free(e); -#endif - return soap_set_receiver_error(soap, "SSL error", "Can't set RSA key", SOAP_SSL_ERROR); - } - RSA_free(rsa); -/* - Oracle customization for OpenSSL 0.9.8 removal of deprecated function usage: RSA_generate_key -*/ -#ifdef OPENSSL_NO_DEPRECATED - BN_free(e); -#endif - } - else if (soap->dhfile) - { - DH *dh = 0; -#ifdef OPENSSL_NO_DEPRECATED - DH dhrec; -#endif - char *s; - int n = (int)soap_strtoul(soap->dhfile, &s, 10); - /* if dhfile is numeric, treat it as a key length to generate DH params which can take a while */ - if (n >= 512 && s && *s == '\0') { -#if !defined(OPENSSL_NO_DEPRECATED) || OPENSSL_VERSION_NUMBER < 0x00908000L - dh = DH_generate_parameters(n, 2/*or 5*/, NULL, NULL); -#else - if (DH_generate_parameters_ex(&dhrec, n, 2/*or 5*/, NULL) == 0) - dh = &dhrec; - else - return soap_set_receiver_error(soap, "SSL error", "Can't compute DH params", SOAP_SSL_ERROR); -#endif - } - else - { BIO *bio; - bio = BIO_new_file(soap->dhfile, "r"); - if (!bio) - return soap_set_receiver_error(soap, "SSL error", "Can't read DH file", SOAP_SSL_ERROR); - dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); - BIO_free(bio); - } - if (!dh || DH_check(dh, &n) != 1 || SSL_CTX_set_tmp_dh(soap->ctx, dh) < 0) - { -#ifndef OPENSSL_NO_DEPRECATED - if (dh) - DH_free(dh); -#endif - return soap_set_receiver_error(soap, "SSL error", "Can't set DH parameters", SOAP_SSL_ERROR); - } -#ifndef OPENSSL_NO_DEPRECATED - DH_free(dh); -#endif - } - - // - // Oracle customization - // - // Added SSL_OP_NO_SSLv3 to force use of TLS - // Added SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG to prevent forced downgrade - // of security level - - flags = ((SSL_OP_ALL & ~SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG) | SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3); - - flags = (SSL_OP_ALL | SSL_OP_NO_SSLv2); - if ((soap->ssl_flags & SOAP_SSLv3)) - flags |= SSL_OP_NO_TLSv1; - if ((soap->ssl_flags & SOAP_TLSv1)) - flags |= SSL_OP_NO_SSLv3; -#ifdef SSL_OP_NO_TICKET - /* TLS extension is enabled by default in OPENSSL v0.9.8k - Disable it by adding SSL_OP_NO_TICKET */ - flags |= SSL_OP_NO_TICKET; -#endif - SSL_CTX_set_options(soap->ctx, flags); - if ((soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) - mode = (SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT); - else if ((soap->ssl_flags & SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION)) - mode = SSL_VERIFY_PEER; - else - mode = SSL_VERIFY_NONE; - SSL_CTX_set_verify(soap->ctx, mode, soap->fsslverify); -#if (OPENSSL_VERSION_NUMBER < 0x00905100L) - SSL_CTX_set_verify_depth(soap->ctx, 1); -#else - SSL_CTX_set_verify_depth(soap->ctx, 9); -#endif - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_1 -static int -ssl_verify_callback(int ok, X509_STORE_CTX *store) -{ -#ifdef SOAP_DEBUG - if (!ok) - { char data[256]; - X509 *cert = X509_STORE_CTX_get_current_cert(store); - fprintf(stderr, "SSL verify error or warning with certificate at depth %d: %s\n", X509_STORE_CTX_get_error_depth(store), X509_verify_cert_error_string(X509_STORE_CTX_get_error(store))); - X509_NAME_oneline(X509_get_issuer_name(cert), data, sizeof(data)); - fprintf(stderr, "certificate issuer %s\n", data); - X509_NAME_oneline(X509_get_subject_name(cert), data, sizeof(data)); - fprintf(stderr, "certificate subject %s\n", data); - } -#endif - /* Note: return 1 to continue, but unsafe progress will be terminated by SSL */ - return ok; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef PALM_1 -static int -ssl_verify_callback_allow_expired_certificate(int ok, X509_STORE_CTX *store) -{ ok = ssl_verify_callback(ok, store); - if (ok == 0 && X509_STORE_CTX_get_error(store) == X509_V_ERR_CERT_HAS_EXPIRED) - { -#ifdef SOAP_DEBUG - fprintf(stderr, "ignoring certificate expiration\n"); -#endif - X509_STORE_CTX_set_error(store, X509_V_OK); - ok = 1; - } - /* Note: return 1 to continue, but unsafe progress will be terminated by SSL */ - return ok; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_OPENSSL -#ifndef WITH_NOIO -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_ssl_accept(struct soap *soap) -{ BIO *bio; - int retries, r, s; - if (!soap_valid_socket(soap->socket)) - return soap_set_receiver_error(soap, "SSL error", "No socket in soap_ssl_accept()", SOAP_SSL_ERROR); - if (!soap->ctx && (soap->error = soap->fsslauth(soap))) - return SOAP_SSL_ERROR; - if (!soap->ssl) - { soap->ssl = SSL_new(soap->ctx); - if (!soap->ssl) - return soap_set_receiver_error(soap, "SSL error", "SSL_new() failed in soap_ssl_accept()", SOAP_SSL_ERROR); - } - else - SSL_clear(soap->ssl); - soap->imode |= SOAP_ENC_SSL; - soap->omode |= SOAP_ENC_SSL; - /* Set SSL sockets to non-blocking */ - SOAP_SOCKNONBLOCK(soap->socket) - bio = BIO_new_socket((int)soap->socket, BIO_NOCLOSE); - SSL_set_bio(soap->ssl, bio, bio); - retries = 100; /* SSL_accept timeout: 10 sec retries, 100 times 0.1 sec */ -#if defined(WITH_OPENSSL) && defined(KMS_SERVER) - /* Oracle customization for Ultra 2 KMS Server */ - if (soap->ssl_accept_timeout > 0 ) - { - retries = 10 * soap->ssl_accept_timeout; - } -#endif - -while ((r = SSL_accept(soap->ssl)) <= 0) - { int err = SSL_get_error(soap->ssl, r); - if (err == SSL_ERROR_WANT_ACCEPT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) - { if (err == SSL_ERROR_WANT_READ) - s = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); - else - s = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); - if (s < 0 && soap->errnum != SOAP_EINTR) - break; - } - else - { soap->errnum = soap_socket_errno(soap->socket); - break; - } - if (retries-- <= 0) - break; - } - if (r <= 0) - { soap_set_receiver_error(soap, soap_ssl_error(soap, r), "SSL_accept() failed in soap_ssl_accept()", SOAP_SSL_ERROR); - soap_closesock(soap); - return SOAP_SSL_ERROR; - } - if ((soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) - { X509 *peer; - int err; - if ((err = SSL_get_verify_result(soap->ssl)) != X509_V_OK) - { soap_closesock(soap); - return soap_set_sender_error(soap, X509_verify_cert_error_string(err), "SSL certificate presented by peer cannot be verified in soap_ssl_accept()", SOAP_SSL_ERROR); - } - peer = SSL_get_peer_certificate(soap->ssl); - if (!peer) - { soap_closesock(soap); - return soap_set_sender_error(soap, "SSL error", "No SSL certificate was presented by the peer in soap_ssl_accept()", SOAP_SSL_ERROR); - } - X509_free(peer); - } - return SOAP_OK; -} -#endif -#endif -#endif - -/******************************************************************************\ - * - * TCP/UDP [SSL/TLS] IPv4 and IPv6 - * -\******************************************************************************/ - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -tcp_init(struct soap *soap) -{ soap->errmode = 1; -#ifdef WIN32 - if (tcp_done) - return 0; - else - { WSADATA w; - if (WSAStartup(MAKEWORD(1, 1), &w)) - return -1; - tcp_done = 1; - } -#endif - return 0; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static const char* -tcp_error(struct soap *soap) -{ register const char *msg = NULL; - switch (soap->errmode) - { case 0: - msg = soap_strerror(soap); - break; - case 1: - msg = "WSAStartup failed"; - break; - case 2: - { -#ifndef WITH_LEAN - msg = soap_code_str(h_error_codes, soap->errnum); - if (!msg) -#endif - { sprintf(soap->msgbuf, "TCP/UDP IP error %d", soap->errnum); - msg = soap->msgbuf; - } - } - } - return msg; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_IPV6 -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -tcp_gethost(struct soap *soap, const char *addr, struct in_addr *inaddr) -{ soap_int32 iadd = -1; - struct hostent hostent, *host = &hostent; -#ifdef VXWORKS - int hostint; - /* inet_addr(), and hostGetByName() expect "char *"; addr is a "const char *". */ - iadd = inet_addr((char*)addr); -#else -#if defined(_AIX43) || ((defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R)) - struct hostent_data ht_data; -#endif -#ifdef AS400 - iadd = inet_addr((void*)addr); -#else - iadd = inet_addr(addr); -#endif -#endif - if (iadd != -1) - { memcpy(inaddr, &iadd, sizeof(iadd)); - return SOAP_OK; - } -#if defined(__GLIBC__) || (defined(HAVE_GETHOSTBYNAME_R) && (defined(FREEBSD) || defined(__FreeBSD__))) - if (gethostbyname_r(addr, &hostent, soap->buf, SOAP_BUFLEN, &host, &soap->errnum) < 0) - host = NULL; -#elif defined(_AIX43) || ((defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R)) - memset((void*)&ht_data, 0, sizeof(ht_data)); - if (gethostbyname_r(addr, &hostent, &ht_data) < 0) - { host = NULL; - soap->errnum = h_errno; - } -#elif defined(HAVE_GETHOSTBYNAME_R) - host = gethostbyname_r(addr, &hostent, soap->buf, SOAP_BUFLEN, &soap->errnum); -#elif defined(VXWORKS) - /* If the DNS resolver library resolvLib has been configured in the vxWorks - * image, a query for the host IP address is sent to the DNS server, if the - * name was not found in the local host table. */ - hostint = hostGetByName((char*)addr); - if (hostint == ERROR) - { host = NULL; - soap->errnum = soap_errno; - } -#else -#ifdef AS400 - if (!(host = gethostbyname((void*)addr))) - soap->errnum = h_errno; -#else - if (!(host = gethostbyname(addr))) - soap->errnum = h_errno; -#endif -#endif - if (!host) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Host name not found\n")); - return SOAP_ERR; - } -#ifdef VXWORKS - inaddr->s_addr = hostint; -#else - memcpy(inaddr, host->h_addr, host->h_length); -#endif - return SOAP_OK; -} -#endif -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static SOAP_SOCKET -tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) -{ -#ifdef WITH_IPV6 - struct addrinfo hints, *res, *ressave; -#endif - SOAP_SOCKET fd; - int err = 0; -#ifndef WITH_LEAN - int len = SOAP_BUFLEN; - int set = 1; -#endif -#if !defined(WITH_LEAN) || defined(WITH_OPENSSL) - int retries; -#endif - if (soap_valid_socket(soap->socket)) - soap->fclosesocket(soap, soap->socket); - soap->socket = SOAP_INVALID_SOCKET; - if (tcp_init(soap)) - { soap->errnum = 0; - soap_set_sender_error(soap, tcp_error(soap), "TCP init failed in tcp_connect()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - soap->errmode = 0; -#ifdef WITH_IPV6 - memset((void*)&hints, 0, sizeof(hints)); - hints.ai_family = PF_UNSPEC; -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - hints.ai_socktype = SOCK_DGRAM; - else -#endif - hints.ai_socktype = SOCK_STREAM; - soap->errmode = 2; - res = NULL; - if (soap->proxy_host) - err = getaddrinfo(soap->proxy_host, soap_int2s(soap, soap->proxy_port), &hints, &res); - else - err = getaddrinfo(host, soap_int2s(soap, port), &hints, &res); - /* Oracle customization: check err before using res */ - if (err || (res==NULL)) - { soap_set_sender_error(soap, SOAP_GAI_STRERROR(err), "getaddrinfo failed in tcp_connect()", SOAP_TCP_ERROR); - if (res) - { - freeaddrinfo(res); - } - return SOAP_INVALID_SOCKET; - } - ressave = res; -again: - fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); - soap->errmode = 0; -#else -#ifndef WITH_LEAN -again: -#endif -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - fd = socket(AF_INET, SOCK_DGRAM, 0); - else -#endif - fd = socket(AF_INET, SOCK_STREAM, 0); -#endif - if (!soap_valid_socket(fd)) - { -#ifdef WITH_IPV6 - if (res->ai_next) - { res = res->ai_next; - goto again; - } -#endif - soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "socket failed in tcp_connect()", SOAP_TCP_ERROR); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#ifdef SOCKET_CLOSE_ON_EXEC -#ifdef WIN32 -#ifndef UNDER_CE - SetHandleInformation((HANDLE)fd, HANDLE_FLAG_INHERIT, 0); -#endif -#else - fcntl(fd, F_SETFD, 1); -#endif -#endif -#ifndef WITH_LEAN - if (soap->connect_flags == SO_LINGER) - { struct linger linger; - memset((void*)&linger, 0, sizeof(linger)); - linger.l_onoff = 1; - linger.l_linger = soap->linger_time; - if (setsockopt(fd, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(struct linger))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt SO_LINGER failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - } - else if (soap->connect_flags && setsockopt(fd, SOL_SOCKET, soap->connect_flags, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - if ((soap->keep_alive || soap->tcp_keep_alive) && setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt SO_KEEPALIVE failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&len, sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt SO_SNDBUF failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&len, sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt SO_RCVBUF failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#ifdef TCP_KEEPIDLE - if (soap->tcp_keep_idle && setsockopt((SOAP_SOCKET)fd, IPPROTO_TCP, TCP_KEEPIDLE, (char*)&(soap->tcp_keep_idle), sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt TCP_KEEPIDLE failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, (SOAP_SOCKET)fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#endif -#ifdef TCP_KEEPINTVL - if (soap->tcp_keep_intvl && setsockopt((SOAP_SOCKET)fd, IPPROTO_TCP, TCP_KEEPINTVL, (char*)&(soap->tcp_keep_intvl), sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt TCP_KEEPINTVL failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, (SOAP_SOCKET)fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#endif -#ifdef TCP_KEEPCNT - if (soap->tcp_keep_cnt && setsockopt((SOAP_SOCKET)fd, IPPROTO_TCP, TCP_KEEPCNT, (char*)&(soap->tcp_keep_cnt), sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt TCP_KEEPCNT failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, (SOAP_SOCKET)fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#endif -#ifdef TCP_NODELAY - if (!(soap->omode & SOAP_IO_UDP) && setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt TCP_NODELAY failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#endif -#ifdef WITH_IPV6 - if ((soap->omode & SOAP_IO_UDP) && soap->ipv6_multicast_if) - { struct sockaddr_in6 *in6addr = (struct sockaddr_in6*)res->ai_addr; - in6addr->sin6_scope_id = soap->ipv6_multicast_if; - } -#endif -#ifdef IP_MULTICAST_TTL - if ((soap->omode & SOAP_IO_UDP) && soap->ipv4_multicast_if && !soap->ipv6_multicast_if) - { if (soap->ipv4_multicast_ttl > 0) - { char ttl = (char)(soap->ipv4_multicast_ttl); - if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(ttl))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_TTL failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } - } -#ifndef WINDOWS - if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, (char*)soap->ipv4_multicast_if, sizeof(struct in_addr))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_IF failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } -#else -#ifndef IP_MULTICAST_IF -#define IP_MULTICAST_IF 2 -#endif - if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, (char*)soap->ipv4_multicast_if, sizeof(struct in_addr))) - { soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_IF failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } -#endif - } -#endif -#endif - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Opening socket %d to host='%s' port=%d\n", fd, host, port)); -#ifndef WITH_IPV6 - soap->peerlen = sizeof(soap->peer); - memset((void*)&soap->peer, 0, sizeof(soap->peer)); - soap->peer.sin_family = AF_INET; - soap->errmode = 2; - if (soap->proxy_host) - { if (soap->fresolve(soap, soap->proxy_host, &soap->peer.sin_addr)) - { soap_set_sender_error(soap, tcp_error(soap), "get proxy host by name failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } - soap->peer.sin_port = htons((short)soap->proxy_port); - } - else - { if (soap->fresolve(soap, host, &soap->peer.sin_addr)) - { soap_set_sender_error(soap, tcp_error(soap), "get host by name failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } - soap->peer.sin_port = htons((short)port); - } - soap->errmode = 0; -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - return fd; -#endif -#else - if ((soap->omode & SOAP_IO_UDP)) - { memcpy(&soap->peer, res->ai_addr, res->ai_addrlen); - soap->peerlen = res->ai_addrlen; - freeaddrinfo(ressave); - return fd; - } -#endif -#ifndef WITH_LEAN - if (soap->connect_timeout) - SOAP_SOCKNONBLOCK(fd) - else - SOAP_SOCKBLOCK(fd) - retries = 10; -#endif - for (;;) - { -#ifdef WITH_IPV6 - if (connect(fd, res->ai_addr, (int)res->ai_addrlen)) -#else - if (connect(fd, (struct sockaddr*)&soap->peer, sizeof(soap->peer))) -#endif - { err = soap_socket_errno(fd); -#ifndef WITH_LEAN - if (err == SOAP_EADDRINUSE) - { soap->fclosesocket(soap, fd); - if (retries-- > 0) - goto again; - } - else if (soap->connect_timeout && (err == SOAP_EINPROGRESS || err == SOAP_EAGAIN || err == SOAP_EWOULDBLOCK)) - { - SOAP_SOCKLEN_T k; - for (;;) - { register int r; - r = tcp_select(soap, fd, SOAP_TCP_SELECT_SND, soap->connect_timeout); - if (r > 0) - break; - if (!r) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connect timeout\n")); - soap_set_sender_error(soap, "Timeout", "connect failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - r = soap->errnum; - if (r != SOAP_EINTR) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not connect to host\n")); - soap_set_sender_error(soap, tcp_error(soap), "connect failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - } - k = (SOAP_SOCKLEN_T)sizeof(soap->errnum); - if (!getsockopt(fd, SOL_SOCKET, SO_ERROR, (char*)&soap->errnum, &k) && !soap->errnum) /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h */ - break; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not connect to host\n")); - if (!soap->errnum) - soap->errnum = soap_socket_errno(fd); - soap_set_sender_error(soap, tcp_error(soap), "connect failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } -#endif -#ifdef WITH_IPV6 - if (res->ai_next) - { res = res->ai_next; - soap->fclosesocket(soap, fd); - goto again; - } -#endif - if (err && err != SOAP_EINTR) - { soap->errnum = err; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not connect to host\n")); - soap_set_sender_error(soap, tcp_error(soap), "connect failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); -#ifdef WITH_IPV6 - freeaddrinfo(ressave); -#endif - return SOAP_INVALID_SOCKET; - } - } - else - break; - } -#ifdef WITH_IPV6 - soap->peerlen = 0; /* IPv6: already connected so use send() */ - freeaddrinfo(ressave); -#endif - if (soap->recv_timeout || soap->send_timeout) - SOAP_SOCKNONBLOCK(fd) - else - SOAP_SOCKBLOCK(fd) - soap->socket = fd; - soap->imode &= ~SOAP_ENC_SSL; - soap->omode &= ~SOAP_ENC_SSL; - if (!soap_tag_cmp(endpoint, "https:*")) - { -#ifdef WITH_OPENSSL - BIO *bio; - int r; - if (soap->proxy_host) - { soap_mode m = soap->mode; /* preserve settings */ - soap_mode om = soap->omode; /* make sure we only parse HTTP */ - size_t n = soap->count; /* save the content length */ - const char *userid, *passwd; - soap->omode &= ~SOAP_ENC; /* mask IO and ENC */ - soap->omode |= SOAP_IO_BUFFER; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connecting to %s proxy server\n", soap->proxy_http_version)); - sprintf(soap->tmpbuf, "CONNECT %s:%d HTTP/%s", host, port, soap->proxy_http_version); - if (soap_begin_send(soap) - || (soap->error = soap->fposthdr(soap, soap->tmpbuf, NULL))) - { soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } -#ifndef WITH_LEAN - if (soap->proxy_userid && soap->proxy_passwd && strlen(soap->proxy_userid) + strlen(soap->proxy_passwd) < 761) - { sprintf(soap->tmpbuf + 262, "%s:%s", soap->proxy_userid, soap->proxy_passwd); - strcpy(soap->tmpbuf, "Basic "); - soap_s2base64(soap, (const unsigned char*)(soap->tmpbuf + 262), soap->tmpbuf + 6, (int)strlen(soap->tmpbuf + 262)); - if ((soap->error = soap->fposthdr(soap, "Proxy-Authorization", soap->tmpbuf))) - { soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - // - // Oracle customization - // TODO: returning soap->error may also be a bug - // - return soap->error; - } - } -#endif - if ((soap->error = soap->fposthdr(soap, NULL, NULL)) - || soap_flush(soap)) - { soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - soap->omode = om; - om = soap->imode; - soap->imode &= ~SOAP_ENC; /* mask IO and ENC */ - userid = soap->userid; /* preserve */ - passwd = soap->passwd; /* preserve */ - if ((soap->error = soap->fparse(soap))) - { soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - soap->userid = userid; /* restore */ - soap->passwd = passwd; /* restore */ - soap->imode = om; /* restore */ - soap->count = n; /* restore */ - if (soap_begin_send(soap)) - { soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } - if (endpoint) - strncpy(soap->endpoint, endpoint, sizeof(soap->endpoint)-1); /* restore */ - soap->mode = m; - } - if (!soap->ctx && (soap->error = soap->fsslauth(soap))) - { soap_set_sender_error(soap, "SSL error", "SSL authentication failed in tcp_connect(): check password, key file, and ca file.", SOAP_SSL_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - if (!soap->ssl) - { soap->ssl = SSL_new(soap->ctx); - if (!soap->ssl) - { soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - soap->error = SOAP_SSL_ERROR; - return SOAP_INVALID_SOCKET; - } - } - else - SSL_clear(soap->ssl); - if (soap->session) - { if (!strcmp(soap->session_host, host) && soap->session_port == port) - SSL_set_session(soap->ssl, soap->session); - SSL_SESSION_free(soap->session); - soap->session = NULL; - } - soap->imode |= SOAP_ENC_SSL; - soap->omode |= SOAP_ENC_SSL; - bio = BIO_new_socket((int)fd, BIO_NOCLOSE); - SSL_set_bio(soap->ssl, bio, bio); - retries = 0; -#ifndef WITH_LEAN - /* Connect timeout: set SSL sockets to non-blocking */ - if (soap->connect_timeout) - { SOAP_SOCKNONBLOCK(fd) - retries = 10*soap->connect_timeout; - } - else - SOAP_SOCKBLOCK(fd) -#endif - // - // Oracle customization - // - // Clear error queue of any errors remaining from a previous operation - ERR_clear_error(); - - if (retries <= 0) - retries = 100; /* SSL connect timeout: 10 sec retries, 100 x 0.1 sec */ - /* Try connecting until success or timeout (when nonblocking) */ - do - { if ((r = SSL_connect(soap->ssl)) <= 0) - { int err = SSL_get_error(soap->ssl, r); - if (err == SSL_ERROR_WANT_CONNECT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) - { register int s; - if (err == SSL_ERROR_WANT_READ) - s = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); - else - s = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); - if (s < 0 && soap->errnum != SOAP_EINTR) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL_connect/select error in tcp_connect\n")); - soap_set_sender_error(soap, soap_ssl_error(soap, r), "SSL_connect failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - if (s == 0 && retries-- <= 0) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL connect timeout\n")); - soap_set_sender_error(soap, "Timeout", "SSL connect failed in tcp_connect()", SOAP_TCP_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - } - else - { soap_set_sender_error(soap, soap_ssl_error(soap, r), "SSL_connect error in tcp_connect()", SOAP_SSL_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - } - } while (!SSL_is_init_finished(soap->ssl)); - /* Set SSL sockets to nonblocking */ - SOAP_SOCKNONBLOCK(fd) - /* Check server credentials when required */ - if ((soap->ssl_flags & SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION)) - { int err; - if ((err = SSL_get_verify_result(soap->ssl)) != X509_V_OK) - { soap_set_sender_error(soap, X509_verify_cert_error_string(err), "SSL certificate presented by peer cannot be verified in tcp_connect()", SOAP_SSL_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - if (!(soap->ssl_flags & SOAP_SSL_SKIP_HOST_CHECK)) - { /* Oracle customization: X509_NAME *subj; */ - int ext_count; - int ok = 0; - X509 *peer; - peer = SSL_get_peer_certificate(soap->ssl); - if (!peer) - { soap_set_sender_error(soap, "SSL error", "No SSL certificate was presented by the peer in tcp_connect()", SOAP_SSL_ERROR); - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - return SOAP_INVALID_SOCKET; - } - ext_count = X509_get_ext_count(peer); - if (ext_count > 0) - { int i; - for (i = 0; i < ext_count; i++) - { X509_EXTENSION *ext = X509_get_ext(peer, i); - const char *ext_str = OBJ_nid2sn(OBJ_obj2nid(X509_EXTENSION_get_object(ext))); - if (ext_str && !strcmp(ext_str, "subjectAltName")) - { X509V3_EXT_METHOD *meth = (X509V3_EXT_METHOD*)X509V3_EXT_get(ext); - void *ext_data; -#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) - const unsigned char *data; -#else - unsigned char *data; -#endif - STACK_OF(CONF_VALUE) *val; - int j; - if (!meth) - break; - data = ext->value->data; -#if (OPENSSL_VERSION_NUMBER > 0x00907000L) - if (meth->it) - ext_data = ASN1_item_d2i(NULL, &data, ext->value->length, ASN1_ITEM_ptr(meth->it)); - else - { /* OpenSSL not perfectly portable at this point (?): - Some compilers appear to prefer - meth->d2i(NULL, (const unsigned char**)&data, ... - and others prefer - meth->d2i(NULL, &data, ext->value->length); - */ - ext_data = meth->d2i(NULL, &data, ext->value->length); - } -#else - ext_data = meth->d2i(NULL, &data, ext->value->length); -#endif - if (ext_data) - { val = meth->i2v(meth, ext_data, NULL); - if (val) - { for (j = 0; j < sk_CONF_VALUE_num(val); j++) - { CONF_VALUE *nval = sk_CONF_VALUE_value(val, j); - if (nval && !strcmp(nval->name, "DNS") && !strcmp(nval->value, host)) - { ok = 1; - break; - } - } - sk_CONF_VALUE_pop_free(val, X509V3_conf_free); - } -#if (OPENSSL_VERSION_NUMBER > 0x00907000L) - if (meth->it) - ASN1_item_free((ASN1_VALUE*)ext_data, ASN1_ITEM_ptr(meth->it)); - else - meth->ext_free(ext_data); -#else - meth->ext_free(ext_data); -#endif - } - } - if (ok) - break; - } - } - // - // Oracle customization - // - // the certificate subject name is an entity name, not a DNS name - // - /* - if (!ok && (subj = X509_get_subject_name(peer))) - { int i = -1; - do - { ASN1_STRING *name; - i = X509_NAME_get_index_by_NID(subj, NID_commonName, i); - if (i == -1) - break; - name = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, i)); - if (name) - { if (!soap_tag_cmp(host, (const char*)M_ASN1_STRING_data(name))) - ok = 1; - else - { unsigned char *tmp = NULL; - ASN1_STRING_to_UTF8(&tmp, name); - if (tmp) - { if (!soap_tag_cmp(host, (const char*)tmp)) - ok = 1; - OPENSSL_free(tmp); - } - } - } - } while (!ok); - } - */ - X509_free(peer); - /* - if (!ok) - { soap_set_sender_error(soap, "SSL error", "SSL certificate host name mismatch in tcp_connect()", SOAP_SSL_ERROR); - soap->fclosesocket(soap, fd); - return SOAP_INVALID_SOCKET; - } - */ - } - } -#ifdef SOAP_DEBUG - // - // Oracle customization for debug - // - if ( SSL_session_reused( soap->ssl ) == 1) - { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL session reused\n")); - } - else - { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL session negotiated\n")); - } -#endif -#else - soap->fclosesocket(soap, fd); - soap->socket = SOAP_INVALID_SOCKET; /* Oracle customization */ - soap->error = SOAP_SSL_ERROR; - return SOAP_INVALID_SOCKET; -#endif - } - return fd; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -tcp_select(struct soap *soap, SOAP_SOCKET s, int flags, int timeout) -{ register int r; - struct timeval tv; - fd_set fd[3], *rfd, *sfd, *efd; - soap->errnum = 0; -#ifndef WIN32 - /* if fd max set size exceeded, use poll() when available */ -#if defined(__QNX__) || defined(QNX) /* select() is not MT safe on some QNX */ - if (1) -#else - if ((int)s >= (int)FD_SETSIZE) -#endif -#ifdef HAVE_POLL - { struct pollfd pollfd; - int retries = 0; - pollfd.fd = (int)s; - pollfd.events = 0; - if (flags & SOAP_TCP_SELECT_RCV) - pollfd.events |= POLLIN; - if (flags & SOAP_TCP_SELECT_SND) - pollfd.events |= POLLOUT; - if (flags & SOAP_TCP_SELECT_ERR) - pollfd.events |= POLLERR; - if (timeout < 0) - timeout /= -1000; /* -usec -> ms */ - else if (timeout <= 1000000) /* avoid overflow */ - timeout *= 1000; /* sec -> ms */ - else - { retries = timeout / 1000000; - timeout = 1000000000; - } - do r = poll(&pollfd, 1, timeout); - while (r == 0 && retries--); - if (r > 0) - { r = 0; - if ((flags & SOAP_TCP_SELECT_RCV) && (pollfd.revents & POLLIN)) - r |= SOAP_TCP_SELECT_RCV; - if ((flags & SOAP_TCP_SELECT_SND) && (pollfd.revents & POLLOUT)) - r |= SOAP_TCP_SELECT_SND; - if ((flags & SOAP_TCP_SELECT_ERR) && (pollfd.revents & POLLERR)) - r |= SOAP_TCP_SELECT_ERR; - } - else if (r < 0) - soap->errnum = soap_socket_errno(s); - return r; - } -#else - { soap->error = SOAP_FD_EXCEEDED; - return -1; - } -#endif -#endif - rfd = sfd = efd = NULL; - if (flags & SOAP_TCP_SELECT_RCV) - { rfd = &fd[0]; - FD_ZERO(rfd); - FD_SET(s, rfd); - } - if (flags & SOAP_TCP_SELECT_SND) - { sfd = &fd[1]; - FD_ZERO(sfd); - FD_SET(s, sfd); - } - if (flags & SOAP_TCP_SELECT_ERR) - { efd = &fd[2]; - FD_ZERO(efd); - FD_SET(s, efd); - } - if (timeout >= 0) - { tv.tv_sec = timeout; - tv.tv_usec = 0; - } - else - { tv.tv_sec = -timeout / 1000000; - tv.tv_usec = -timeout % 1000000; - } - r = select((int)s + 1, rfd, sfd, efd, &tv); - if (r > 0) - { r = 0; - if ((flags & SOAP_TCP_SELECT_RCV) && FD_ISSET(s, rfd)) - r |= SOAP_TCP_SELECT_RCV; - if ((flags & SOAP_TCP_SELECT_SND) && FD_ISSET(s, sfd)) - r |= SOAP_TCP_SELECT_SND; - if ((flags & SOAP_TCP_SELECT_ERR) && FD_ISSET(s, efd)) - r |= SOAP_TCP_SELECT_ERR; - } - else if (r < 0) - soap->errnum = soap_socket_errno(s); - return r; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static SOAP_SOCKET -tcp_accept(struct soap *soap, SOAP_SOCKET s, struct sockaddr *a, int *n) -{ SOAP_SOCKET fd; - fd = accept(s, a, (SOAP_SOCKLEN_T*)n); /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h */ -#ifdef SOCKET_CLOSE_ON_EXEC -#ifdef WIN32 -#ifndef UNDER_CE - SetHandleInformation((HANDLE)fd, HANDLE_FLAG_INHERIT, 0); -#endif -#else - fcntl(fd, F_SETFD, FD_CLOEXEC); -#endif -#endif - return fd; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -tcp_disconnect(struct soap *soap) -{ -#ifdef WITH_OPENSSL - if (soap->ssl) - { int r, s = 0; - if (soap->session) - { SSL_SESSION_free(soap->session); - soap->session = NULL; - } - if (*soap->host) - { soap->session = SSL_get1_session(soap->ssl); - if (soap->session) - { strcpy(soap->session_host, soap->host); - soap->session_port = soap->port; - } - } - r = SSL_shutdown(soap->ssl); - /* SSL shutdown does not work when reads are pending */ - while (SSL_want_read(soap->ssl)) - { SSL_read(soap->ssl, NULL, 0); - if (soap_socket_errno(soap->socket) != SOAP_EAGAIN) - { r = SSL_shutdown(soap->ssl); - break; - } - } - if (r == 0) - { if (soap_valid_socket(soap->socket)) - { if (!soap->fshutdownsocket(soap, soap->socket, 1)) - { -#ifndef WITH_LEAN - /* - wait up to 10 seconds for close_notify to be sent by peer (if peer not - present, this avoids calling SSL_shutdown() which has a lengthy return - timeout) - */ - r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, 10); - if (r <= 0 && soap->errnum != SOAP_EINTR) - { soap->errnum = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connection lost...\n")); - soap->fclosesocket(soap, soap->socket); - soap->socket = SOAP_INVALID_SOCKET; - ERR_remove_state(0); - return SOAP_OK; - } -#else - r = SSL_shutdown(soap->ssl); -#endif - } - } - } - if (r != 1) - { s = ERR_get_error(); - if (s) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Shutdown failed: %d\n", SSL_get_error(soap->ssl, r))); - if (soap_valid_socket(soap->socket) && !(soap->omode & SOAP_IO_UDP)) - { soap->fclosesocket(soap, soap->socket); - soap->socket = SOAP_INVALID_SOCKET; - } - } - } - SSL_free(soap->ssl); - soap->ssl = NULL; - if (s) - return SOAP_SSL_ERROR; - ERR_remove_state(0); - } -#endif - if (soap_valid_socket(soap->socket) && !(soap->omode & SOAP_IO_UDP)) - { soap->fshutdownsocket(soap, soap->socket, 2); - soap->fclosesocket(soap, soap->socket); - soap->socket = SOAP_INVALID_SOCKET; - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -tcp_closesocket(struct soap *soap, SOAP_SOCKET fd) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Close socket %d\n", (int)fd)); - return soap_closesocket(fd); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static int -tcp_shutdownsocket(struct soap *soap, SOAP_SOCKET fd, int how) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Shutdown socket %d how=%d\n", (int)fd, how)); - return shutdown(fd, how); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -SOAP_FMAC1 -SOAP_SOCKET -SOAP_FMAC2 -soap_bind(struct soap *soap, const char *host, int port, int backlog) -{ -#ifdef WITH_IPV6 - struct addrinfo *addrinfo = NULL; - struct addrinfo hints; - struct addrinfo res; - int err; -#ifdef IPV6_V6ONLY - int unset = 0; -#ifdef SOL_IP - int level = SOL_IP; -#else - int level = IPPROTO_IPV6; -#endif -#endif -#endif -#ifndef WITH_LEAN - int len = SOAP_BUFLEN; - int set = 1; -#endif - if (soap_valid_socket(soap->master)) - { soap->fclosesocket(soap, soap->master); - soap->master = SOAP_INVALID_SOCKET; - } - soap->socket = SOAP_INVALID_SOCKET; - soap->errmode = 1; - if (tcp_init(soap)) - { soap_set_receiver_error(soap, tcp_error(soap), "TCP init failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#ifdef WITH_IPV6 - memset((void*)&hints, 0, sizeof(hints)); - hints.ai_family = PF_UNSPEC; -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - hints.ai_socktype = SOCK_DGRAM; - else -#endif - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_PASSIVE; - soap->errmode = 2; - /* Oracle customization: check err before using addrinfo */ - err = getaddrinfo(host, soap_int2s(soap, port), &hints, &addrinfo); - if (err || !addrinfo) - { soap_set_receiver_error(soap, SOAP_GAI_STRERROR(err), "getaddrinfo failed in soap_bind()", SOAP_TCP_ERROR); - if (addrinfo) - { - freeaddrinfo(addrinfo); - } - return SOAP_INVALID_SOCKET; - } - res = *addrinfo; - memcpy(&soap->peer, addrinfo->ai_addr, addrinfo->ai_addrlen); - soap->peerlen = addrinfo->ai_addrlen; - res.ai_addr = (struct sockaddr*)&soap->peer; - res.ai_addrlen = soap->peerlen; - freeaddrinfo(addrinfo); - soap->master = (int)socket(res.ai_family, res.ai_socktype, res.ai_protocol); -#else -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - soap->master = (int)socket(AF_INET, SOCK_DGRAM, 0); - else -#endif - soap->master = (int)socket(AF_INET, SOCK_STREAM, 0); -#endif - soap->errmode = 0; - if (!soap_valid_socket(soap->master)) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "socket failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - soap->socket = soap->master; -#endif -#ifdef SOCKET_CLOSE_ON_EXEC -#ifdef WIN32 -#ifndef UNDER_CE - SetHandleInformation((HANDLE)soap->master, HANDLE_FLAG_INHERIT, 0); -#endif -#else - fcntl(soap->master, F_SETFD, 1); -#endif -#endif -#ifndef WITH_LEAN - if (soap->bind_flags && setsockopt(soap->master, SOL_SOCKET, soap->bind_flags, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - if (((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) && setsockopt(soap->master, SOL_SOCKET, SO_KEEPALIVE, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_KEEPALIVE failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - if (setsockopt(soap->master, SOL_SOCKET, SO_SNDBUF, (char*)&len, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_SNDBUF failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - if (setsockopt(soap->master, SOL_SOCKET, SO_RCVBUF, (char*)&len, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_RCVBUF failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#ifdef TCP_NODELAY - if (!(soap->omode & SOAP_IO_UDP) && setsockopt(soap->master, IPPROTO_TCP, TCP_NODELAY, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_NODELAY failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#endif -#endif -#ifdef WITH_IPV6 -#ifdef IPV6_V6ONLY - if (setsockopt(soap->master, level, IPV6_V6ONLY, (char*)&unset, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->master); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IPV6_V6ONLY failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#endif - soap->errmode = 0; - if (bind(soap->master, res.ai_addr, (int)res.ai_addrlen)) - { soap->errnum = soap_socket_errno(soap->master); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind to host\n")); - soap_closesock(soap); - soap_set_receiver_error(soap, tcp_error(soap), "bind failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#else - soap->peerlen = sizeof(soap->peer); - memset((void*)&soap->peer, 0, sizeof(soap->peer)); - soap->peer.sin_family = AF_INET; - soap->errmode = 2; - if (host) - { if (soap->fresolve(soap, host, &soap->peer.sin_addr)) - { soap_set_receiver_error(soap, tcp_error(soap), "get host by name failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - } - else - soap->peer.sin_addr.s_addr = htonl(INADDR_ANY); - soap->peer.sin_port = htons((short)port); - soap->errmode = 0; - if (bind(soap->master, (struct sockaddr*)&soap->peer, (int)soap->peerlen)) - { soap->errnum = soap_socket_errno(soap->master); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind to host\n")); - soap_closesock(soap); - soap_set_receiver_error(soap, tcp_error(soap), "bind failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -#endif - if (!(soap->omode & SOAP_IO_UDP) && listen(soap->master, backlog)) - { soap->errnum = soap_socket_errno(soap->master); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind to host\n")); - soap_closesock(soap); - soap_set_receiver_error(soap, tcp_error(soap), "listen failed in soap_bind()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - return soap->master; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_poll(struct soap *soap) -{ -#ifndef WITH_LEAN - register int r; - if (soap_valid_socket(soap->socket)) - { r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_ALL, 0); - if (r > 0 && (r & SOAP_TCP_SELECT_ERR)) - r = -1; - } - else if (soap_valid_socket(soap->master)) - r = tcp_select(soap, soap->master, SOAP_TCP_SELECT_SND, 0); - else - return SOAP_OK; - if (r > 0) - { -#ifdef WITH_OPENSSL - if (soap->imode & SOAP_ENC_SSL) - { - if (soap_valid_socket(soap->socket) - && (r & SOAP_TCP_SELECT_SND) - && (!(r & SOAP_TCP_SELECT_RCV) - || SSL_peek(soap->ssl, soap->tmpbuf, 1) > 0)) - return SOAP_OK; - } - else -#endif - if (soap_valid_socket(soap->socket) - && (r & SOAP_TCP_SELECT_SND) - && (!(r & SOAP_TCP_SELECT_RCV) - || recv(soap->socket, soap->tmpbuf, 1, MSG_PEEK) > 0)) - return SOAP_OK; - } - else if (r < 0) - { if ((soap_valid_socket(soap->master) || soap_valid_socket(soap->socket)) && soap_socket_errno(soap->master) != SOAP_EINTR) - { soap_set_receiver_error(soap, tcp_error(soap), "select failed in soap_poll()", SOAP_TCP_ERROR); - return soap->error = SOAP_TCP_ERROR; - } - } - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Polling: other end down on socket=%d select=%d\n", soap->socket, r)); - return SOAP_EOF; -#else - return SOAP_OK; -#endif -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -SOAP_FMAC1 -SOAP_SOCKET -SOAP_FMAC2 -soap_accept(struct soap *soap) -{ int n = (int)sizeof(soap->peer); -#ifndef WITH_LEAN - int len = SOAP_BUFLEN; - int set = 1; -#endif - soap->error = SOAP_OK; -#ifndef WITH_LEAN - if ((soap->omode & SOAP_IO_UDP)) - return soap->socket = soap->master; -#endif - memset((void*)&soap->peer, 0, sizeof(soap->peer)); - soap->socket = SOAP_INVALID_SOCKET; - soap->errmode = 0; - soap->keep_alive = 0; - if (soap_valid_socket(soap->master)) - { register int err; - for (;;) - { if (soap->accept_timeout || soap->send_timeout || soap->recv_timeout) - { for (;;) - { register int r; - r = tcp_select(soap, soap->master, SOAP_TCP_SELECT_ALL, soap->accept_timeout ? soap->accept_timeout : 60); - if (r > 0) - break; - if (!r && soap->accept_timeout) - { soap_set_receiver_error(soap, "Timeout", "accept failed in soap_accept()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - if (r < 0) - { r = soap->errnum; - if (r != SOAP_EINTR) - { soap_closesock(soap); - soap_set_sender_error(soap, tcp_error(soap), "accept failed in soap_accept()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } - } - } - } - if (soap->accept_timeout || soap->send_timeout || soap->recv_timeout) - SOAP_SOCKNONBLOCK(soap->master) - else - SOAP_SOCKBLOCK(soap->master) - soap->socket = soap->faccept(soap, soap->master, (struct sockaddr*)&soap->peer, &n); - soap->peerlen = (size_t)n; - if (soap_valid_socket(soap->socket)) - { -#ifdef WITH_IPV6 -/* Use soap->host to store the numeric form of the remote host */ - getnameinfo((struct sockaddr*)&soap->peer, n, soap->host, sizeof(soap->host), NULL, 0, NI_NUMERICHOST | NI_NUMERICSERV); - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Accept socket %d from %s\n", soap->socket, soap->host)); - // - // Oracle customization - // - // bug fix: save off the remote host - strcpy(soap->session_host, soap->host); - soap->ip = 0; /* info stored in soap->peer and soap->host */ - soap->port = 0; /* info stored in soap->peer and soap->host */ -#else - soap->ip = ntohl(soap->peer.sin_addr.s_addr); - soap->port = (int)ntohs(soap->peer.sin_port); /* does not return port number on some systems */ - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Accept socket %d at port %d from IP %d.%d.%d.%d\n", soap->socket, soap->port, (int)(soap->ip>>24)&0xFF, (int)(soap->ip>>16)&0xFF, (int)(soap->ip>>8)&0xFF, (int)soap->ip&0xFF)); -#endif -#ifndef WITH_LEAN - if (soap->accept_flags == SO_LINGER) - { struct linger linger; - memset((void*)&linger, 0, sizeof(linger)); - linger.l_onoff = 1; - linger.l_linger = soap->linger_time; - if (setsockopt(soap->socket, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(struct linger))) - { soap->errnum = soap_socket_errno(soap->socket); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_LINGER failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } - } - else if (soap->accept_flags && setsockopt(soap->socket, SOL_SOCKET, soap->accept_flags, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->socket); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } - if (((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) && setsockopt(soap->socket, SOL_SOCKET, SO_KEEPALIVE, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->socket); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_KEEPALIVE failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } - if (setsockopt(soap->socket, SOL_SOCKET, SO_SNDBUF, (char*)&len, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->socket); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_SNDBUF failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } - if (setsockopt(soap->socket, SOL_SOCKET, SO_RCVBUF, (char*)&len, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->socket); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_RCVBUF failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } -#ifdef TCP_NODELAY - if (!(soap->omode & SOAP_IO_UDP) && setsockopt(soap->socket, IPPROTO_TCP, TCP_NODELAY, (char*)&set, sizeof(int))) - { soap->errnum = soap_socket_errno(soap->socket); - soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_NODELAY failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } -#endif -#endif - soap->keep_alive = (((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) != 0); - return soap->socket; - } - err = soap_socket_errno(soap->socket); - if (err != 0 && err != SOAP_EINTR && err != SOAP_EAGAIN && err != SOAP_EWOULDBLOCK) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Accept failed from %s\n", soap->host)); - soap->errnum = err; - soap_set_receiver_error(soap, tcp_error(soap), "accept failed in soap_accept()", SOAP_TCP_ERROR); - soap_closesock(soap); - return SOAP_INVALID_SOCKET; - } - } - } - else - { soap->errnum = 0; - soap_set_receiver_error(soap, tcp_error(soap), "no master socket in soap_accept()", SOAP_TCP_ERROR); - return SOAP_INVALID_SOCKET; - } -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_closesock(struct soap *soap) -{ register int status = soap->error; -#ifndef WITH_LEANER - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->dime.first = NULL; - soap->dime.last = NULL; -#endif - if (soap->fdisconnect && (soap->error = soap->fdisconnect(soap))) - return soap->error; - if (status == SOAP_EOF || status == SOAP_TCP_ERROR || status == SOAP_SSL_ERROR || !soap->keep_alive) - { if (soap->fclose && (soap->error = soap->fclose(soap))) - return soap->error; - soap->keep_alive = 0; - } -#ifdef WITH_ZLIB - if (soap->zlib_state == SOAP_ZLIB_DEFLATE) - deflateEnd(soap->d_stream); - else if (soap->zlib_state == SOAP_ZLIB_INFLATE) - inflateEnd(soap->d_stream); - soap->zlib_state = SOAP_ZLIB_NONE; -#endif - return soap->error = status; -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_cleanup(struct soap *soap) -{ soap_done(soap); -#ifdef WIN32 - if (!tcp_done) - return; - tcp_done = 0; - WSACleanup(); -#endif -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_done(struct soap *soap) -{ -#ifdef SOAP_DEBUG - int i; -#endif - if (soap_check_state(soap)) - return; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Done with context\n")); - soap_free_temp(soap); - while (soap->clist) - { struct soap_clist *p = soap->clist->next; - SOAP_FREE(soap, soap->clist); - soap->clist = p; - } - if (soap->state == SOAP_INIT) - soap->omode &= ~SOAP_IO_UDP; /* to force close the socket */ - soap->keep_alive = 0; /* to force close the socket */ - soap_closesock(soap); -#ifdef WITH_COOKIES - soap_free_cookies(soap); -#endif - while (soap->plugins) - { register struct soap_plugin *p = soap->plugins->next; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Removing plugin '%s'\n", soap->plugins->id)); - if (soap->plugins->fcopy || soap->state == SOAP_INIT) - soap->plugins->fdelete(soap, soap->plugins); - SOAP_FREE(soap, soap->plugins); - soap->plugins = p; - } - soap->fplugin = fplugin; - soap->fmalloc = NULL; -#ifndef WITH_NOHTTP - soap->fpost = http_post; - soap->fget = http_get; - soap->fput = http_405; - soap->fdel = http_405; - soap->fhead = http_405; - soap->fform = NULL; - soap->fposthdr = http_post_header; - soap->fresponse = http_response; - soap->fparse = http_parse; - soap->fparsehdr = http_parse_header; -#endif - soap->fheader = NULL; -#ifndef WITH_NOIO -#ifndef WITH_IPV6 - soap->fresolve = tcp_gethost; -#else - soap->fresolve = NULL; -#endif - soap->faccept = tcp_accept; - soap->fopen = tcp_connect; - soap->fclose = tcp_disconnect; - soap->fclosesocket = tcp_closesocket; - soap->fshutdownsocket = tcp_shutdownsocket; - soap->fsend = fsend; - soap->frecv = frecv; - soap->fpoll = soap_poll; -#else - soap->fopen = NULL; - soap->fclose = NULL; - soap->fpoll = NULL; -#endif -#ifndef WITH_LEANER - soap->fprepareinitsend = NULL; - soap->fprepareinitrecv = NULL; - soap->fpreparesend = NULL; - soap->fpreparerecv = NULL; - soap->fpreparefinalsend = NULL; - soap->fpreparefinalrecv = NULL; -#endif - soap->fseterror = NULL; - soap->fignore = NULL; - soap->fserveloop = NULL; -#ifdef WITH_OPENSSL - if (soap->session) - { SSL_SESSION_free(soap->session); - soap->session = NULL; - } -#endif - if (soap->state == SOAP_INIT) - { if (soap_valid_socket(soap->master)) - { soap->fclosesocket(soap, soap->master); - soap->master = SOAP_INVALID_SOCKET; - } - } -#ifdef WITH_OPENSSL - if (soap->ssl) - { SSL_free(soap->ssl); - soap->ssl = NULL; - } - if (soap->state == SOAP_INIT) - { if (soap->ctx) - { SSL_CTX_free(soap->ctx); - soap->ctx = NULL; - } - } -#endif -#ifdef WITH_OPENSSL - ERR_remove_state(0); -#endif -#ifdef WITH_C_LOCALE - freelocale(soap->c_locale); -#endif -#ifdef WITH_ZLIB - if (soap->d_stream) - { SOAP_FREE(soap, (void*)soap->d_stream); - soap->d_stream = NULL; - } - if (soap->z_buf) - { SOAP_FREE(soap, (void*)soap->z_buf); - soap->z_buf = NULL; - } -#endif -#ifdef SOAP_DEBUG - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free logfiles\n")); - for (i = 0; i < SOAP_MAXLOGS; i++) - { if (soap->logfile[i]) - { SOAP_FREE(soap, (void*)soap->logfile[i]); - soap->logfile[i] = NULL; - } - soap_close_logfile(soap, i); - } - soap->state = SOAP_NONE; -#endif -#ifdef SOAP_MEM_DEBUG - soap_free_mht(soap); -#endif -} -#endif - -/******************************************************************************\ - * - * HTTP - * -\******************************************************************************/ - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_parse(struct soap *soap) -{ char header[SOAP_HDRLEN], *s; - unsigned short httpcmd = 0, status = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Waiting for HTTP request/response...\n")); - *soap->endpoint = '\0'; - soap->length = 0; - soap->userid = NULL; - soap->passwd = NULL; - soap->action = NULL; - soap->authrealm = NULL; - soap->proxy_from = NULL; - soap->http_content = NULL; - soap->status = 0; - do - { if (soap_getline(soap, soap->msgbuf, sizeof(soap->msgbuf))) - { if (soap->error == SOAP_EOF) - return SOAP_EOF; - return soap->error = 414; - } - if ((s = strchr(soap->msgbuf, ' '))) - { soap->status = (unsigned short)soap_strtoul(s, &s, 10); - if (!soap_blank(*s)) - soap->status = 0; - } - else - soap->status = 0; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "HTTP status: %s\n", soap->msgbuf)); - for (;;) - { if (soap_getline(soap, header, SOAP_HDRLEN)) - { if (soap->error == SOAP_EOF) - { soap->error = SOAP_OK; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "EOF in HTTP header, continue anyway\n")); - break; - } - return soap->error; - } - if (!*header) - break; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "HTTP header: %s\n", header)); - s = strchr(header, ':'); - if (s) - { char *t; - *s = '\0'; - do s++; - while (*s && *s <= 32); - if (*s == '"') - s++; - t = s + strlen(s) - 1; - while (t > s && *t <= 32) - t--; - if (t >= s && *t == '"') - t--; - t[1] = '\0'; - if ((soap->error = soap->fparsehdr(soap, header, s))) - { if (soap->error < SOAP_STOP) - return soap->error; - status = soap->error; - soap->error = SOAP_OK; - } - } - } - } while (soap->status == 100); - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Finished HTTP header parsing, status = %d\n", soap->status)); - s = strstr(soap->msgbuf, "HTTP/"); - if (s && s[7] != '1') - { if (soap->keep_alive == 1) - soap->keep_alive = 0; - if (soap->status == 0 && (soap->omode & SOAP_IO) == SOAP_IO_CHUNK) /* soap->status == 0 for HTTP request */ - { soap->imode |= SOAP_IO_CHUNK; - soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_STORE; - } - } - if (soap->keep_alive < 0) - soap->keep_alive = 1; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Keep alive connection = %d\n", soap->keep_alive)); - if (soap->status == 0) - { size_t l = 0; - if (s) - { if (!strncmp(soap->msgbuf, "POST ", l = 5)) - httpcmd = 1; - else if (!strncmp(soap->msgbuf, "GET ", l = 4)) - httpcmd = 2; - else if (!strncmp(soap->msgbuf, "PUT ", l = 4)) - httpcmd = 3; - else if (!strncmp(soap->msgbuf, "DELETE ", l = 7)) - httpcmd = 4; - else if (!strncmp(soap->msgbuf, "HEAD ", l = 5)) - httpcmd = 5; - } - if (s && httpcmd) - { size_t m = strlen(soap->endpoint); - size_t n = m + (s - soap->msgbuf) - l - 1; - if (m > n) - m = n; - if (n >= sizeof(soap->endpoint)) - n = sizeof(soap->endpoint) - 1; - strncpy(soap->path, soap->msgbuf + l, n - m); - soap->path[n - m] = '\0'; - strcat(soap->endpoint, soap->path); - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Target endpoint='%s'\n", soap->endpoint)); - if (httpcmd > 1) - { switch (httpcmd) - { case 2: soap->error = soap->fget(soap); break; - case 3: soap->error = soap->fput(soap); break; - case 4: soap->error = soap->fdel(soap); break; - case 5: soap->error = soap->fhead(soap); break; - default: soap->error = 405; break; - } - if (soap->error == SOAP_OK) - soap->error = SOAP_STOP; /* prevents further processing */ - return soap->error; - } - if (status) - return soap->error = status; - } - else if (status) - return soap->error = status; - else if (s) - return soap->error = 405; - } - /* Status OK (HTTP 200) */ - if (soap->status == 0 || soap->status == 200) - return SOAP_OK; - /* Status 201 (Created), 202 (Accepted), ... and HTTP 400 and 500 errors - may not have a body. When content length, content type, or chunking is - used assume there is a message to parse, either XML or HTTP. - This version allows parsing of content when length=0: - if (soap->length > 0 || soap->http_content || (soap->imode & SOAP_IO) == SOAP_IO_CHUNK) - */ - if (soap->length > 0 || (soap->imode & SOAP_IO) == SOAP_IO_CHUNK) - { if (((soap->status > 200 && soap->status <= 299) || soap->status == 400 || soap->status == 500)) - return SOAP_OK; - /* force close afterwards in soap_closesock() */ - soap->keep_alive = 0; - /* read HTTP body for error details */ - s = soap_get_http_body(soap); - if (s) - return soap_set_receiver_error(soap, soap->msgbuf, s, soap->status); - } - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "HTTP error %d\n", soap->status)); - return soap_set_receiver_error(soap, "HTTP Error", soap->msgbuf, soap->status); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_parse_header(struct soap *soap, const char *key, const char *val) -{ if (!soap_tag_cmp(key, "Host")) - { -#ifdef WITH_OPENSSL - if (soap->imode & SOAP_ENC_SSL) - strcpy(soap->endpoint, "https://"); - else -#endif - strcpy(soap->endpoint, "http://"); - strncat(soap->endpoint, val, sizeof(soap->endpoint) - 8); - soap->endpoint[sizeof(soap->endpoint) - 1] = '\0'; - } -#ifndef WITH_LEANER - else if (!soap_tag_cmp(key, "Content-Type")) - { const char *action; - soap->http_content = soap_strdup(soap, val); - if (soap_get_header_attribute(soap, val, "application/dime")) - soap->imode |= SOAP_ENC_DIME; - else if (soap_get_header_attribute(soap, val, "multipart/related") - || soap_get_header_attribute(soap, val, "multipart/form-data")) - { soap->mime.boundary = soap_strdup(soap, soap_get_header_attribute(soap, val, "boundary")); - soap->mime.start = soap_strdup(soap, soap_get_header_attribute(soap, val, "start")); - soap->imode |= SOAP_ENC_MIME; - } - action = soap_get_header_attribute(soap, val, "action"); - if (action) - { if (*action == '"') - { soap->action = soap_strdup(soap, action + 1); - soap->action[strlen(soap->action) - 1] = '\0'; - } - else - soap->action = soap_strdup(soap, action); - } - } -#endif - else if (!soap_tag_cmp(key, "Content-Length")) - { soap->length = soap_strtoul(val, NULL, 10); - } - else if (!soap_tag_cmp(key, "Content-Encoding")) - { if (!soap_tag_cmp(val, "deflate")) -#ifdef WITH_ZLIB - soap->zlib_in = SOAP_ZLIB_DEFLATE; -#else - return SOAP_ZLIB_ERROR; -#endif - else if (!soap_tag_cmp(val, "gzip")) -#ifdef WITH_GZIP - soap->zlib_in = SOAP_ZLIB_GZIP; -#else - return SOAP_ZLIB_ERROR; -#endif - } -#ifdef WITH_ZLIB - else if (!soap_tag_cmp(key, "Accept-Encoding")) - { -#ifdef WITH_GZIP - if (strchr(val, '*') || soap_get_header_attribute(soap, val, "gzip")) - soap->zlib_out = SOAP_ZLIB_GZIP; - else -#endif - if (strchr(val, '*') || soap_get_header_attribute(soap, val, "deflate")) - soap->zlib_out = SOAP_ZLIB_DEFLATE; - else - soap->zlib_out = SOAP_ZLIB_NONE; - } -#endif - else if (!soap_tag_cmp(key, "Transfer-Encoding")) - { soap->imode &= ~SOAP_IO; - if (!soap_tag_cmp(val, "chunked")) - soap->imode |= SOAP_IO_CHUNK; - } - else if (!soap_tag_cmp(key, "Connection")) - { if (!soap_tag_cmp(val, "keep-alive")) - soap->keep_alive = -soap->keep_alive; - else if (!soap_tag_cmp(val, "close")) - soap->keep_alive = 0; - } -#ifndef WITH_LEAN - else if (!soap_tag_cmp(key, "Authorization")) - { if (!soap_tag_cmp(val, "Basic *")) - { int n; - char *s; - soap_base642s(soap, val + 6, soap->tmpbuf, sizeof(soap->tmpbuf) - 1, &n); - soap->tmpbuf[n] = '\0'; - if ((s = strchr(soap->tmpbuf, ':'))) - { *s = '\0'; - soap->userid = soap_strdup(soap, soap->tmpbuf); - soap->passwd = soap_strdup(soap, s + 1); - } - } - } - else if (!soap_tag_cmp(key, "WWW-Authenticate")) - { soap->authrealm = soap_strdup(soap, soap_get_header_attribute(soap, val + 6, "realm")); - } - else if (!soap_tag_cmp(key, "Expect")) - { if (!soap_tag_cmp(val, "100-continue")) - { if ((soap->error = soap->fposthdr(soap, "HTTP/1.1 100 Continue", NULL)) - || (soap->error = soap->fposthdr(soap, NULL, NULL))) - return soap->error; - } - } -#endif - else if (!soap_tag_cmp(key, "SOAPAction")) - { if (*val == '"') - { soap->action = soap_strdup(soap, val + 1); - soap->action[strlen(soap->action) - 1] = '\0'; - } - else - soap->action = soap_strdup(soap, val); - } - else if (!soap_tag_cmp(key, "Location")) - { strncpy(soap->endpoint, val, sizeof(soap->endpoint)); - soap->endpoint[sizeof(soap->endpoint) - 1] = '\0'; - } - else if (!soap_tag_cmp(key, "X-Forwarded-For")) - { soap->proxy_from = soap_strdup(soap, val); - } -#ifdef WITH_COOKIES - else if (!soap_tag_cmp(key, "Cookie") - || !soap_tag_cmp(key, "Cookie2") - || !soap_tag_cmp(key, "Set-Cookie") - || !soap_tag_cmp(key, "Set-Cookie2")) - { soap_getcookies(soap, val); - } -#endif - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) -#ifndef PALM_1 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_get_header_attribute(struct soap *soap, const char *line, const char *key) -{ register const char *s = line; - if (s) - { while (*s) - { register short flag; - s = soap_decode_key(soap->tmpbuf, sizeof(soap->tmpbuf), s); - flag = soap_tag_cmp(soap->tmpbuf, key); - s = soap_decode_val(soap->tmpbuf, sizeof(soap->tmpbuf), s); - if (!flag) - return soap->tmpbuf; - } - } - return NULL; -} -#endif -#endif - -/******************************************************************************/ -#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) -#ifndef PALM_1 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_decode_key(char *buf, size_t len, const char *val) -{ return soap_decode(buf, len, val, "=,;"); -} -#endif -#endif - -/******************************************************************************/ -#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) -#ifndef PALM_1 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_decode_val(char *buf, size_t len, const char *val) -{ if (*val != '=') - { *buf = '\0'; - return val; - } - return soap_decode(buf, len, val + 1, ",;"); -} -#endif -#endif - -/******************************************************************************/ -#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) -#ifndef PALM_1 -static const char* -soap_decode(char *buf, size_t len, const char *val, const char *sep) -{ const char *s; - char *t = buf; - for (s = val; *s; s++) - if (*s != ' ' && *s != '\t' && !strchr(sep, *s)) - break; - if (*s == '"') - { s++; - while (*s && *s != '"' && --len) - *t++ = *s++; - } - else - { while (*s && !soap_blank(*s) && !strchr(sep, *s) && --len) - { if (*s == '%') - { *t++ = ((s[1] >= 'A' ? (s[1] & 0x7) + 9 : s[1] - '0') << 4) - + (s[2] >= 'A' ? (s[2] & 0x7) + 9 : s[2] - '0'); - s += 3; - } - else - *t++ = *s++; - } - } - *t = '\0'; - while (*s && !strchr(sep, *s)) - s++; - return s; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static const char* -http_error(struct soap *soap, int status) -{ register const char *msg = SOAP_STR_EOS; -#ifndef WITH_LEAN - msg = soap_code_str(h_http_error_codes, status); - if (!msg) - msg = SOAP_STR_EOS; -#endif - return msg; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_get(struct soap *soap) -{ return SOAP_GET_METHOD; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_405(struct soap *soap) -{ return 405; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_post(struct soap *soap, const char *endpoint, const char *host, int port, const char *path, const char *action, size_t count) -{ register const char *s; - register int err; - if (soap->status == SOAP_GET) - s = "GET"; - else - s = "POST"; -#ifdef PALM - if (!endpoint || (soap_tag_cmp(endpoint, "http:*") && soap_tag_cmp(endpoint, "https:*") && strncmp(endpoint, "httpg:", 6)) && strncmp(endpoint, "_beam:", 6) && strncmp(endpoint, "_local:", 7) && strncmp(endpoint, "_btobex:", 8)) -#else - if (!endpoint || (soap_tag_cmp(endpoint, "http:*") && soap_tag_cmp(endpoint, "https:*") && strncmp(endpoint, "httpg:", 6))) -#endif - return SOAP_OK; - if (strlen(endpoint) + strlen(soap->http_version) > sizeof(soap->tmpbuf) - 80) - return soap->error = SOAP_EOM; - if (soap->proxy_host && soap_tag_cmp(endpoint, "https:*")) - sprintf(soap->tmpbuf, "%s %s HTTP/%s", s, endpoint, soap->http_version); - else - sprintf(soap->tmpbuf, "%s /%s HTTP/%s", s, (*path == '/' ? path + 1 : path), soap->http_version); - if ((err = soap->fposthdr(soap, soap->tmpbuf, NULL))) - return err; -#ifdef WITH_OPENSSL - if ((soap->ssl && soap->port != 443) || (!soap->ssl && soap->port != 80)) - sprintf(soap->tmpbuf, "%s:%d", host, port); - else - strcpy(soap->tmpbuf, host); -#else - if (port != 80) - sprintf(soap->tmpbuf, "%s:%d", host, port); - else - { /* Oracle customization */ - strncpy(soap->tmpbuf, host, sizeof(soap->tmpbuf) - 1); - soap->tmpbuf[sizeof(soap->tmpbuf) - 1] = '\0'; - } -#endif -// Oracle customization - if ((err = soap->fposthdr(soap, "Host", soap->tmpbuf)) - || (err = soap->fposthdr(soap, "User-Agent", "SunKMS gSOAP/2.7.17")) - || (err = soap_puthttphdr(soap, SOAP_OK, count))) - return err; -#ifdef WITH_ZLIB -#ifdef WITH_GZIP - if ((err = soap->fposthdr(soap, "Accept-Encoding", "gzip, deflate"))) -#else - if ((err = soap->fposthdr(soap, "Accept-Encoding", "deflate"))) -#endif - return err; -#endif -#ifndef WITH_LEAN - if (soap->userid && soap->passwd && strlen(soap->userid) + strlen(soap->passwd) < 761) - { sprintf(soap->tmpbuf + 262, "%s:%s", soap->userid, soap->passwd); - strcpy(soap->tmpbuf, "Basic "); - soap_s2base64(soap, (const unsigned char*)(soap->tmpbuf + 262), soap->tmpbuf + 6, (int)strlen(soap->tmpbuf + 262)); - if ((err = soap->fposthdr(soap, "Authorization", soap->tmpbuf))) - return err; - } - if (soap->proxy_userid && soap->proxy_passwd && strlen(soap->proxy_userid) + strlen(soap->proxy_passwd) < 761) - { sprintf(soap->tmpbuf + 262, "%s:%s", soap->proxy_userid, soap->proxy_passwd); - strcpy(soap->tmpbuf, "Basic "); - soap_s2base64(soap, (const unsigned char*)(soap->tmpbuf + 262), soap->tmpbuf + 6, (int)strlen(soap->tmpbuf + 262)); - if ((err = soap->fposthdr(soap, "Proxy-Authorization", soap->tmpbuf))) - return err; - } -#endif -#ifdef WITH_COOKIES -#ifdef WITH_OPENSSL - if (soap_putcookies(soap, host, path, soap->ssl != NULL)) - return soap->error; -#else - if (soap_putcookies(soap, host, path, 0)) - return soap->error; -#endif -#endif - if (soap->status != SOAP_GET && (soap->version == 1 || (action && *action))) - { sprintf(soap->tmpbuf, "\"%s\"", action && strlen(action) < sizeof(soap->tmpbuf) - 3 ? action : SOAP_STR_EOS); - if ((err = soap->fposthdr(soap, "SOAPAction", soap->tmpbuf))) - return err; - } - return soap->fposthdr(soap, NULL, NULL); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_send_header(struct soap *soap, const char *s) -{ register const char *t; - do - { t = strchr(s, '\n'); /* disallow \n in HTTP headers */ - if (!t) - t = s + strlen(s); - if (soap_send_raw(soap, s, t - s)) - return soap->error; - s = t + 1; - } while (*t); - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_post_header(struct soap *soap, const char *key, const char *val) -{ if (key) - { if (http_send_header(soap, key)) - return soap->error; - if (val && (soap_send_raw(soap, ": ", 2) || http_send_header(soap, val))) - return soap->error; - } - return soap_send_raw(soap, "\r\n", 2); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -static int -http_response(struct soap *soap, int status, size_t count) -{ register int err; -#ifdef WMW_RPM_IO - if (soap->rpmreqid) - httpOutputEnable(soap->rpmreqid); -#endif - if (strlen(soap->http_version) > 4) - return soap->error = SOAP_EOM; - if (!status || status == SOAP_HTML || status == SOAP_FILE) - { const char *s; - if (count || ((soap->omode & SOAP_IO) == SOAP_IO_CHUNK)) - s = "200 OK"; - else - s = "202 ACCEPTED"; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Status = %s\n", s)); -#ifdef WMW_RPM_IO - if (soap->rpmreqid || soap_valid_socket(soap->master) || soap_valid_socket(soap->socket)) /* RPM behaves as if standalone */ -#else - if (soap_valid_socket(soap->master) || soap_valid_socket(soap->socket)) /* standalone application (socket) or CGI (stdin/out)? */ -#endif - { sprintf(soap->tmpbuf, "HTTP/%s %s", soap->http_version, s); - if ((err = soap->fposthdr(soap, soap->tmpbuf, NULL))) - return err; - } - else if ((err = soap->fposthdr(soap, "Status", s))) /* CGI header */ - return err; - } - else if (status >= 200 && status < 600) - { sprintf(soap->tmpbuf, "HTTP/%s %d %s", soap->http_version, status, http_error(soap, status)); - if ((err = soap->fposthdr(soap, soap->tmpbuf, NULL))) - return err; -#ifndef WITH_LEAN - if (status == 401) - { sprintf(soap->tmpbuf, "Basic realm=\"%s\"", (soap->authrealm && strlen(soap->authrealm) < sizeof(soap->tmpbuf) - 14) ? soap->authrealm : "gSOAP Web Service"); - if ((err = soap->fposthdr(soap, "WWW-Authenticate", soap->tmpbuf))) - return err; - } - else if ((status >= 301 && status <= 303) || status == 307) - { if ((err = soap->fposthdr(soap, "Location", soap->endpoint))) - return err; - } -#endif - } - else - { const char *s = *soap_faultcode(soap); - if (status >= SOAP_GET_METHOD && status <= SOAP_HTTP_METHOD) - s = "405 Method Not Allowed"; - else if (soap->version == 2 && (!s || !strcmp(s, "SOAP-ENV:Sender"))) - s = "400 Bad Request"; - else - s = "500 Internal Server Error"; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error %s (status=%d)\n", s, status)); -#ifdef WMW_RPM_IO - if (soap->rpmreqid || soap_valid_socket(soap->master) || soap_valid_socket(soap->socket)) /* RPM behaves as if standalone */ -#else - if (soap_valid_socket(soap->master) || soap_valid_socket(soap->socket)) /* standalone application */ -#endif - { sprintf(soap->tmpbuf, "HTTP/%s %s", soap->http_version, s); - if ((err = soap->fposthdr(soap, soap->tmpbuf, NULL))) - return err; - } - else if ((err = soap->fposthdr(soap, "Status", s))) /* CGI */ - return err; - } - if ((err = soap->fposthdr(soap, "Server", "gSOAP/2.7")) - || (err = soap_puthttphdr(soap, status, count))) - return err; -#ifdef WITH_COOKIES - if (soap_putsetcookies(soap)) - return soap->error; -#endif - return soap->fposthdr(soap, NULL, NULL); -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_response(struct soap *soap, int status) -{ register size_t count; - if (!(soap->omode & (SOAP_ENC_XML | SOAP_IO_STORE /* this tests for chunking too */)) - && (status == SOAP_HTML || status == SOAP_FILE)) - soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_STORE; - soap->status = status; - count = soap_count_attachments(soap); - if (soap_begin_send(soap)) - return soap->error; -#ifndef WITH_NOHTTP - if ((soap->mode & SOAP_IO) != SOAP_IO_STORE && !(soap->mode & SOAP_ENC_XML)) - { register int n = soap->mode; - soap->mode &= ~(SOAP_IO | SOAP_ENC_ZLIB); - if ((n & SOAP_IO) != SOAP_IO_FLUSH) - soap->mode |= SOAP_IO_BUFFER; - if ((soap->error = soap->fresponse(soap, status, count))) - return soap->error; -#ifndef WITH_LEANER - if ((n & SOAP_IO) == SOAP_IO_CHUNK) - { if (soap_flush(soap)) - return soap->error; - } -#endif - soap->mode = n; - } -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************\ - * - * HTTP Cookies - * -\******************************************************************************/ - -#ifdef WITH_COOKIES -/******************************************************************************/ -SOAP_FMAC1 -size_t -SOAP_FMAC2 -soap_encode_cookie(const char *s, char *t, size_t len) -{ register int c; - register size_t n = len; - while ((c = *s++) && --n > 0) - { if (c > ' ' && c < 128 && !strchr("()<>@,;:\\\"/[]?={}#!$&'*+", c)) - *t++ = c; - else if (n > 2) - { *t++ = '%'; - *t++ = (c >> 4) + (c > 159 ? '7' : '0'); - c &= 0xF; - *t++ = c + (c > 9 ? '7' : '0'); - n -= 2; - } - else - break; - } - *t = '\0'; - return len - n; -} - -/******************************************************************************/ -SOAP_FMAC1 -struct soap_cookie* -SOAP_FMAC2 -soap_cookie(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie *p; - if (!domain) - domain = soap->cookie_domain; - if (!path) - path = soap->cookie_path; - if (!path) - path = SOAP_STR_EOS; - else if (*path == '/') - path++; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Search cookie %s domain=%s path=%s\n", name, domain?domain:"(null)", path?path:"(null)")); - for (p = soap->cookies; p; p = p->next) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cookie in database: %s=%s domain=%s path=%s env=%hd\n", p->name, p->value?p->value:"(null)", p->domain?p->domain:"(null)", p->path?p->path:"(null)", p->env)); - if (!strcmp(p->name, name) - && p->domain - && p->path - && !strcmp(p->domain, domain) - && (!*p->path || !strncmp(p->path, path, strlen(p->path)))) - break; - } - return p; -} - -/******************************************************************************/ -SOAP_FMAC1 -struct soap_cookie* -SOAP_FMAC2 -soap_set_cookie(struct soap *soap, const char *name, const char *value, const char *domain, const char *path) -{ struct soap_cookie **p, *q; - int n; - if (!domain) - domain = soap->cookie_domain; - if (!path) - path = soap->cookie_path; - if (!path) - path = SOAP_STR_EOS; - else if (*path == '/') - path++; - q = soap_cookie(soap, name, domain, path); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set %scookie: %s=%s domain=%s path=%s\n", q ? SOAP_STR_EOS : "new ", name, value?value:"(null)", domain?domain:"(null)", path?path:"(null)")); - if (!q) - { if ((q = (struct soap_cookie*)SOAP_MALLOC(soap, sizeof(struct soap_cookie)))) - { if ((q->name = (char*)SOAP_MALLOC(soap, strlen(name)+1))) - strcpy(q->name, name); - q->value = NULL; - q->domain = NULL; - q->path = NULL; - q->expire = 0; - q->maxage = -1; - q->version = 1; - q->secure = 0; - q->modified = 0; - for (p = &soap->cookies, n = soap->cookie_max; *p && n; p = &(*p)->next, n--) - if (!strcmp((*p)->name, name) && (*p)->path && path && strcmp((*p)->path, path) < 0) - break; - if (n) - { q->next = *p; - *p = q; - } - else - { SOAP_FREE(soap, q->name); - SOAP_FREE(soap, q); - q = NULL; - } - } - } - else - q->modified = 1; - if (q) - { if (q->value) - { if (!value || strcmp(value, q->value)) - { SOAP_FREE(soap, q->value); - q->value = NULL; - } - } - if (value && *value && !q->value && (q->value = (char*)SOAP_MALLOC(soap, strlen(value)+1))) - strcpy(q->value, value); - if (q->domain) - { if (!domain || strcmp(domain, q->domain)) - { SOAP_FREE(soap, q->domain); - q->domain = NULL; - } - } - if (domain && !q->domain && (q->domain = (char*)SOAP_MALLOC(soap, strlen(domain)+1))) - strcpy(q->domain, domain); - if (q->path) - { if (!path || strncmp(path, q->path, strlen(q->path))) - { SOAP_FREE(soap, q->path); - q->path = NULL; - } - } - if (path && !q->path && (q->path = (char*)SOAP_MALLOC(soap, strlen(path)+1))) - strcpy(q->path, path); - q->session = 1; - q->env = 0; - } - return q; -} - -/******************************************************************************/ -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_clr_cookie(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie **p, *q; - if (!domain) - domain = soap->cookie_domain; - if (!domain) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error in clear cookie %s: cookie domain not set\n", name?name:"(null)")); - return; - } - if (!path) - path = soap->cookie_path; - if (!path) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error in clear cookie %s: cookie path not set\n", name?name:"(null)")); - return; - } - if (*path == '/') - path++; - for (p = &soap->cookies, q = *p; q; q = *p) - { if (!strcmp(q->name, name) && !strcmp(q->domain, domain) && !strncmp(q->path, path, strlen(q->path))) - { if (q->value) - SOAP_FREE(soap, q->value); - if (q->domain) - SOAP_FREE(soap, q->domain); - if (q->path) - SOAP_FREE(soap, q->path); - *p = q->next; - SOAP_FREE(soap, q); - } - else - p = &q->next; - } -} - -/******************************************************************************/ -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_cookie_value(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie *p; - if ((p = soap_cookie(soap, name, domain, path))) - return p->value; - return NULL; -} - -/******************************************************************************/ -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_env_cookie_value(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie *p; - if ((p = soap_cookie(soap, name, domain, path)) && p->env) - return p->value; - return NULL; -} - -/******************************************************************************/ -SOAP_FMAC1 -time_t -SOAP_FMAC2 -soap_cookie_expire(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie *p; - if ((p = soap_cookie(soap, name, domain, path))) - return p->expire; - return -1; -} - -/******************************************************************************/ -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_cookie_expire(struct soap *soap, const char *name, long expire, const char *domain, const char *path) -{ struct soap_cookie *p; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set cookie expiration max-age %ld: %s domain=%s path=%s\n", expire, name, domain?domain:"(null)", path?path:"(null)")); - if ((p = soap_cookie(soap, name, domain, path))) - { p->maxage = expire; - p->modified = 1; - return SOAP_OK; - } - return SOAP_ERR; -} - -/******************************************************************************/ -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_cookie_session(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie *p; - if ((p = soap_cookie(soap, name, domain, path))) - { p->session = 1; - p->modified = 1; - return SOAP_OK; - } - return SOAP_ERR; -} - -/******************************************************************************/ -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_clr_cookie_session(struct soap *soap, const char *name, const char *domain, const char *path) -{ struct soap_cookie *p; - if ((p = soap_cookie(soap, name, domain, path))) - { p->session = 0; - p->modified = 1; - return SOAP_OK; - } - return SOAP_ERR; -} - -/******************************************************************************/ -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putsetcookies(struct soap *soap) -{ struct soap_cookie *p; - char *s, tmp[4096]; - const char *t; - for (p = soap->cookies; p; p = p->next) - { - if (p->modified -#ifdef WITH_OPENSSL - || (!p->env && !soap->ssl == !p->secure) -#endif - ) - { s = tmp; - if (p->name) - s += soap_encode_cookie(p->name, s, tmp-s+4064); - if (p->value && *p->value) - { *s++ = '='; - s += soap_encode_cookie(p->value, s, tmp-s+4064); - } - if (p->domain && (int)strlen(p->domain) < tmp-s+4064) - { strcpy(s, ";Domain="); - strcat(s, p->domain); - } - else if (soap->cookie_domain && (int)strlen(soap->cookie_domain) < tmp-s+4064) - { strcpy(s, ";Domain="); - strcat(s, soap->cookie_domain); - } - strcat(s, ";Path=/"); - s += strlen(s); - if (p->path) - t = p->path; - else - t = soap->cookie_path; - if (t) - { if (*t == '/') - t++; - if ((int)strlen(t) < tmp-s+4064) - { if (strchr(t, '%')) /* already URL encoded? */ - { strcpy(s, t); - s += strlen(s); - } - else - s += soap_encode_cookie(t, s, tmp-s+4064); - } - } - if (p->version > 0 && s-tmp < 4060) - { sprintf(s, ";Version=%u", p->version); - s += strlen(s); - } - if (p->maxage >= 0 && s-tmp < 4060) - { sprintf(s, ";Max-Age=%ld", p->maxage); - s += strlen(s); - } - if (s-tmp < 4073 - && (p->secure -#ifdef WITH_OPENSSL - || soap->ssl -#endif - )) - strcpy(s, ";Secure"); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set-Cookie: %s\n", tmp)); - if ((soap->error = soap->fposthdr(soap, "Set-Cookie", tmp))) - return soap->error; - } - } - return SOAP_OK; -} - -/******************************************************************************/ -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putcookies(struct soap *soap, const char *domain, const char *path, int secure) -{ struct soap_cookie **p, *q; - unsigned int version = 0; - time_t now = time(NULL); - char *s, tmp[4096]; - p = &soap->cookies; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending cookies for domain=%s path=%s\n", domain, path)); - if (*path == '/') - path++; - while ((q = *p)) - { if (q->expire && now > q->expire) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cookie %s expired\n", q->name)); - SOAP_FREE(soap, q->name); - if (q->value) - SOAP_FREE(soap, q->value); - if (q->domain) - SOAP_FREE(soap, q->domain); - if (q->path) - SOAP_FREE(soap, q->path); - *p = q->next; - SOAP_FREE(soap, q); - } - else - { int flag; - char *t = q->domain; - size_t n = 0; - if (!t) - flag = 1; - else - { const char *r = strchr(t, ':'); - if (r) - n = r - t; - else - n = strlen(t); - flag = !strncmp(t, domain, n); - } - /* domain-level cookies, cannot compile when WITH_NOIO set */ -#ifndef WITH_NOIO - if (!flag) - { struct hostent *hostent = gethostbyname((char*)domain); - if (hostent) - { const char *r = strchr(hostent->h_name, '.'); - if (!r) - r = hostent->h_name; - flag = !strncmp(t, r, n); - } - } -#endif - if (flag - && (!q->path || !strncmp(q->path, path, strlen(q->path))) - && (!q->secure || secure)) - { s = tmp; - if (q->version != version) - { sprintf(s, "$Version=%u;", q->version); - version = q->version; - } - if (q->name) - s += soap_encode_cookie(q->name, s, tmp-s+4080); - if (q->value && *q->value) - { *s++ = '='; - s += soap_encode_cookie(q->value, s, tmp-s+4080); - } - if (q->path && *q->path && (int)strlen(q->path) < tmp-s+4080) - { sprintf(s, ";$Path=\"/%s\"", (*q->path == '/' ? q->path + 1 : q->path)); - s += strlen(s); - } - if (q->domain && (int)strlen(q->domain) < tmp-s+4080) - sprintf(s, ";$Domain=\"%s\"", q->domain); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cookie: %s\n", tmp)); - if ((soap->error = soap->fposthdr(soap, "Cookie", tmp))) - return soap->error; - } - p = &q->next; - } - } - return SOAP_OK; -} - -/******************************************************************************/ -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_getcookies(struct soap *soap, const char *val) -{ struct soap_cookie *p = NULL, *q; - const char *s; - char *t, tmp[4096]; /* cookie size is up to 4096 bytes [RFC2109] */ - char *domain = NULL; - char *path = NULL; - unsigned int version = 0; - time_t now = time(NULL); - if (!val) - return; - s = val; - while (*s) - { s = soap_decode_key(tmp, sizeof(tmp), s); - if (!soap_tag_cmp(tmp, "$Version")) - { if ((s = soap_decode_val(tmp, sizeof(tmp), s))) - { if (p) - p->version = (int)soap_strtol(tmp, NULL, 10); - else - version = (int)soap_strtol(tmp, NULL, 10); - } - } - else if (!soap_tag_cmp(tmp, "$Path")) - { s = soap_decode_val(tmp, sizeof(tmp), s); - if (*tmp) - { if ((t = (char*)SOAP_MALLOC(soap, strlen(tmp)+1))) - strcpy(t, tmp); - } - else - t = NULL; - if (p) - { if (p->path) - SOAP_FREE(soap, p->path); - p->path = t; - } - else - { if (path) - SOAP_FREE(soap, path); - path = t; - } - } - else if (!soap_tag_cmp(tmp, "$Domain")) - { s = soap_decode_val(tmp, sizeof(tmp), s); - if (*tmp) - { if ((t = (char*)SOAP_MALLOC(soap, strlen(tmp)+1))) - strcpy(t, tmp); - } - else - t = NULL; - if (p) - { if (p->domain) - SOAP_FREE(soap, p->domain); - p->domain = t; - } - else - { if (domain) - SOAP_FREE(soap, domain); - domain = t; - } - } - else if (p && !soap_tag_cmp(tmp, "Path")) - { if (p->path) - SOAP_FREE(soap, p->path); - s = soap_decode_val(tmp, sizeof(tmp), s); - if (*tmp) - { if ((p->path = (char*)SOAP_MALLOC(soap, strlen(tmp)+1))) - strcpy(p->path, tmp); - } - else - p->path = NULL; - } - else if (p && !soap_tag_cmp(tmp, "Domain")) - { if (p->domain) - SOAP_FREE(soap, p->domain); - s = soap_decode_val(tmp, sizeof(tmp), s); - if (*tmp) - { if ((p->domain = (char*)SOAP_MALLOC(soap, strlen(tmp)+1))) - strcpy(p->domain, tmp); - } - else - p->domain = NULL; - } - else if (p && !soap_tag_cmp(tmp, "Version")) - { s = soap_decode_val(tmp, sizeof(tmp), s); - p->version = (unsigned int)soap_strtoul(tmp, NULL, 10); - } - else if (p && !soap_tag_cmp(tmp, "Max-Age")) - { s = soap_decode_val(tmp, sizeof(tmp), s); - p->expire = now + soap_strtol(tmp, NULL, 10); - } - else if (p && !soap_tag_cmp(tmp, "Expires")) - { struct tm T; - char a[3]; - static const char mns[] = "anebarprayunulugepctovec"; - s = soap_decode_val(tmp, sizeof(tmp), s); - if (strlen(tmp) > 20) - { memset((void*)&T, 0, sizeof(T)); - a[0] = tmp[4]; - a[1] = tmp[5]; - a[2] = '\0'; - T.tm_mday = (int)soap_strtol(a, NULL, 10); - a[0] = tmp[8]; - a[1] = tmp[9]; - T.tm_mon = (int)(strstr(mns, a) - mns) / 2; - a[0] = tmp[11]; - a[1] = tmp[12]; - T.tm_year = 100 + (int)soap_strtol(a, NULL, 10); - a[0] = tmp[13]; - a[1] = tmp[14]; - T.tm_hour = (int)soap_strtol(a, NULL, 10); - a[0] = tmp[16]; - a[1] = tmp[17]; - T.tm_min = (int)soap_strtol(a, NULL, 10); - a[0] = tmp[19]; - a[1] = tmp[20]; - T.tm_sec = (int)soap_strtol(a, NULL, 10); - p->expire = soap_timegm(&T); - } - } - else if (p && !soap_tag_cmp(tmp, "Secure")) - p->secure = 1; - else - { if (p) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Got environment cookie %s=%s domain=%s path=%s expire=%ld secure=%d\n", p->name, p->value?p->value:"(null)", p->domain?p->domain:"(null)", p->path?p->path:"(null)", p->expire, p->secure)); - if ((q = soap_set_cookie(soap, p->name, p->value, p->domain, p->path))) - { q->version = p->version; - q->expire = p->expire; - q->secure = p->secure; - q->env = 1; - } - if (p->name) - SOAP_FREE(soap, p->name); - if (p->value) - SOAP_FREE(soap, p->value); - if (p->domain) - SOAP_FREE(soap, p->domain); - if (p->path) - SOAP_FREE(soap, p->path); - SOAP_FREE(soap, p); - } - if ((p = (struct soap_cookie*)SOAP_MALLOC(soap, sizeof(struct soap_cookie)))) - { p->name = (char*)SOAP_MALLOC(soap, strlen(tmp)+1); - strcpy(p->name, tmp); - s = soap_decode_val(tmp, sizeof(tmp), s); - if (*tmp) - { p->value = (char*)SOAP_MALLOC(soap, strlen(tmp)+1); - strcpy(p->value, tmp); - } - else - p->value = NULL; - if (domain) - p->domain = domain; - else if (*soap->host) - { p->domain = (char*)SOAP_MALLOC(soap, strlen(soap->host)+1); - strcpy(p->domain, soap->host); - } - else - p->domain = NULL; - if (path) - p->path = path; - else if (soap->path && *soap->path) - { p->path = (char*)SOAP_MALLOC(soap, strlen(soap->path)+1); - strcpy(p->path, soap->path); - } - else - { p->path = (char*)SOAP_MALLOC(soap, 2); - strcpy(p->path, "/"); - } - p->expire = 0; - p->secure = 0; - p->version = version; - } - } - } - if (p) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Got environment cookie %s=%s domain=%s path=%s expire=%ld secure=%d\n", p->name, p->value?p->value:"(null)", p->domain?p->domain:"(null)", p->path?p->path:"(null)", p->expire, p->secure)); - if ((q = soap_set_cookie(soap, p->name, p->value, p->domain, p->path))) - { q->version = p->version; - q->expire = p->expire; - q->secure = p->secure; - q->env = 1; - } - if (p->name) - SOAP_FREE(soap, p->name); - if (p->value) - SOAP_FREE(soap, p->value); - if (p->domain) - SOAP_FREE(soap, p->domain); - if (p->path) - SOAP_FREE(soap, p->path); - SOAP_FREE(soap, p); - } - if (domain) - SOAP_FREE(soap, domain); - if (path) - SOAP_FREE(soap, path); -} - -/******************************************************************************/ -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getenv_cookies(struct soap *soap) -{ struct soap_cookie *p; - const char *s; - char key[4096], val[4096]; /* cookie size is up to 4096 bytes [RFC2109] */ - if (!(s = getenv("HTTP_COOKIE"))) - return SOAP_ERR; - do - { s = soap_decode_key(key, sizeof(key), s); - s = soap_decode_val(val, sizeof(val), s); - p = soap_set_cookie(soap, key, val, NULL, NULL); - if (p) - p->env = 1; - } while (*s); - return SOAP_OK; -} - -/******************************************************************************/ -SOAP_FMAC1 -struct soap_cookie* -SOAP_FMAC2 -soap_copy_cookies(struct soap *copy, const struct soap *soap) -{ struct soap_cookie *p, **q, *r; - q = &r; - for (p = soap->cookies; p; p = p->next) - { if (!(*q = (struct soap_cookie*)SOAP_MALLOC(copy, sizeof(struct soap_cookie)))) - return r; - **q = *p; - if (p->name) - { if (((*q)->name = (char*)SOAP_MALLOC(copy, strlen(p->name)+1))) - strcpy((*q)->name, p->name); - } - if (p->value) - { if (((*q)->value = (char*)SOAP_MALLOC(copy, strlen(p->value)+1))) - strcpy((*q)->value, p->value); - } - if (p->domain) - { if (((*q)->domain = (char*)SOAP_MALLOC(copy, strlen(p->domain)+1))) - strcpy((*q)->domain, p->domain); - } - if (p->path) - { if (((*q)->path = (char*)SOAP_MALLOC(copy, strlen(p->path)+1))) - strcpy((*q)->path, p->path); - } - q = &(*q)->next; - } - *q = NULL; - return r; -} - -/******************************************************************************/ -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_free_cookies(struct soap *soap) -{ struct soap_cookie *p; - for (p = soap->cookies; p; p = soap->cookies) - { soap->cookies = p->next; - SOAP_FREE(soap, p->name); - if (p->value) - SOAP_FREE(soap, p->value); - if (p->domain) - SOAP_FREE(soap, p->domain); - if (p->path) - SOAP_FREE(soap, p->path); - SOAP_FREE(soap, p); - } -} - -/******************************************************************************/ -#endif /* WITH_COOKIES */ - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -size_t -SOAP_FMAC2 -soap_hash(register const char *s) -{ register size_t h = 0; - while (*s) - h = 65599*h + *s++; - return h % SOAP_IDHASH; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -static void -soap_init_pht(struct soap *soap) -{ register int i; - soap->pblk = NULL; - soap->pidx = 0; - for (i = 0; i < (int)SOAP_PTRHASH; i++) - soap->pht[i] = NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -struct soap* -SOAP_FMAC2 -soap_new1(soap_mode mode) -{ return soap_new2(mode, mode); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -struct soap* -SOAP_FMAC2 -soap_new() -{ return soap_new2(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -struct soap* -SOAP_FMAC2 -soap_new2(soap_mode imode, soap_mode omode) -{ struct soap *soap = (struct soap*)malloc(sizeof(struct soap)); - if (soap) - soap_init2(soap, imode, omode); - return soap; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_free(struct soap *soap) -{ soap_done(soap); - free(soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_del(struct soap *soap) -{ free(soap); -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -static void -soap_free_pht(struct soap *soap) -{ register struct soap_pblk *pb, *next; - register int i; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free pointer hashtable\n")); - for (pb = soap->pblk; pb; pb = next) - { next = pb->next; - SOAP_FREE(soap, pb); - } - soap->pblk = NULL; - soap->pidx = 0; - for (i = 0; i < (int)SOAP_PTRHASH; i++) - soap->pht[i] = NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_embed(struct soap *soap, const void *p, const struct soap_array *a, int n, const char *tag, int type) -{ register int i; - struct soap_plist *pp; - if (soap->version == 2) - soap->encoding = 1; - if (a) - i = soap_array_pointer_lookup(soap, p, a, n, type, &pp); - else - i = soap_pointer_lookup(soap, p, type, &pp); - if (i) - { if (soap_is_embedded(soap, pp) - || soap_is_single(soap, pp)) - return 0; - soap_set_embedded(soap, pp); - } - return i; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_pointer_lookup(struct soap *soap, const void *p, int type, struct soap_plist **ppp) -{ register struct soap_plist *pp; - *ppp = NULL; - if (p) - { for (pp = soap->pht[soap_hash_ptr(p)]; pp; pp = pp->next) - { if (pp->ptr == p && pp->type == type) - { *ppp = pp; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup location=%p type=%d id=%d\n", p, type, pp->id)); - return pp->id; - } - } - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup location=%p type=%d: not found\n", p, type)); - return 0; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_pointer_enter(struct soap *soap, const void *p, const struct soap_array *a, int n, int type, struct soap_plist **ppp) -{ register size_t h; - register struct soap_plist *pp; - if (!soap->pblk || soap->pidx >= SOAP_PTRBLK) - { register struct soap_pblk *pb = (struct soap_pblk*)SOAP_MALLOC(soap, sizeof(struct soap_pblk)); - if (!pb) - { soap->error = SOAP_EOM; - return 0; - } - pb->next = soap->pblk; - soap->pblk = pb; - soap->pidx = 0; - } - *ppp = pp = &soap->pblk->plist[soap->pidx++]; - if (a) - h = soap_hash_ptr(a->__ptr); - else - h = soap_hash_ptr(p); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Pointer enter location=%p array=%p size=%d dim=%d type=%d id=%d\n", p, a?a->__ptr:NULL, a?a->__size:0, n, type, soap->idnum+1)); - pp->next = soap->pht[h]; - pp->type = type; - pp->mark1 = 0; - pp->mark2 = 0; - pp->ptr = p; - pp->array = a; - soap->pht[h] = pp; - pp->id = ++soap->idnum; - return pp->id; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_array_pointer_lookup(struct soap *soap, const void *p, const struct soap_array *a, int n, int type, struct soap_plist **ppp) -{ register struct soap_plist *pp; - *ppp = NULL; - if (!p || !a->__ptr) - return 0; - for (pp = soap->pht[soap_hash_ptr(a->__ptr)]; pp; pp = pp->next) - { if (pp->type == type && pp->array && pp->array->__ptr == a->__ptr) - { register int i; - for (i = 0; i < n; i++) - if (((const int*)&pp->array->__size)[i] != ((const int*)&a->__size)[i]) - break; - if (i == n) - { *ppp = pp; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array lookup location=%p type=%d id=%d\n", a->__ptr, type, pp->id)); - return pp->id; - } - } - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array lookup location=%p type=%d: not found\n", a->__ptr, type)); - return 0; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_begin_count(struct soap *soap) -{ soap_free_ns(soap); -#ifndef WITH_LEANER - if ((soap->mode & SOAP_ENC_DIME) || (soap->omode & SOAP_ENC_DIME)) - soap->mode = soap->omode | SOAP_IO_LENGTH | SOAP_ENC_DIME; - else -#endif - { soap->mode = soap->omode; - if ((soap->mode & SOAP_IO_UDP)) - soap->mode |= SOAP_ENC_XML; - if ((soap->mode & SOAP_IO) == SOAP_IO_STORE - || (((soap->mode & SOAP_IO) == SOAP_IO_CHUNK || (soap->mode & SOAP_ENC_XML)) -#ifndef WITH_LEANER - && !soap->fpreparesend -#endif - )) - soap->mode &= ~SOAP_IO_LENGTH; - else - soap->mode |= SOAP_IO_LENGTH; - } -#ifdef WITH_ZLIB - if ((soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) == SOAP_IO_FLUSH) - { if (!(soap->mode & SOAP_ENC_DIME)) - soap->mode &= ~SOAP_IO_LENGTH; - if (soap->mode & SOAP_ENC_XML) - soap->mode |= SOAP_IO_BUFFER; - else - soap->mode |= SOAP_IO_STORE; - } -#endif - if (!soap->encodingStyle && !(soap->mode & SOAP_XML_GRAPH)) - soap->mode |= SOAP_XML_TREE; -#ifndef WITH_LEANER - if ((soap->mode & SOAP_ENC_MTOM) && (soap->mode & SOAP_ENC_DIME)) - soap->mode |= SOAP_ENC_MIME; - else if (!(soap->mode & SOAP_ENC_MIME)) - soap->mode &= ~SOAP_ENC_MTOM; - if (soap->mode & SOAP_ENC_MIME) - soap_select_mime_boundary(soap); - soap->dime.list = soap->dime.last; /* keep track of last DIME attachment */ -#endif - soap->count = 0; - soap->ns = 0; - soap->null = 0; - soap->position = 0; - soap->mustUnderstand = 0; - soap->encoding = 0; - soap->part = SOAP_BEGIN; - soap->idnum = 0; - soap_clr_attr(soap); - soap_set_local_namespaces(soap); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Begin count phase (socket=%d mode=0x%x count=%lu)\n", soap->socket, (unsigned int)soap->mode, (unsigned long)soap->count)); -#ifndef WITH_LEANER - soap->dime.count = 0; /* count # of attachments */ - soap->dime.size = 0; /* accumulate total size of attachments */ - if (soap->fprepareinitsend && (soap->mode & SOAP_IO) != SOAP_IO_STORE) - return soap->error = soap->fprepareinitsend(soap); -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_end_count(struct soap *soap) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of count phase\n")); -#ifndef WITH_LEANER - if (soap->fpreparefinalsend && (soap->mode & SOAP_IO_LENGTH)) - return soap->error = soap->fpreparefinalsend(soap); -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_begin_send(struct soap *soap) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Initializing for output\n")); - soap_free_ns(soap); - soap->error = SOAP_OK; - soap->mode = soap->omode | (soap->mode & (SOAP_IO_LENGTH | SOAP_ENC_DIME)); -#ifdef WITH_ZLIB - if ((soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) == SOAP_IO_FLUSH) - { if (soap->mode & SOAP_ENC_XML) - soap->mode |= SOAP_IO_BUFFER; - else - soap->mode |= SOAP_IO_STORE; - } -#endif -#ifndef WITH_LEAN - if ((soap->mode & SOAP_IO_UDP)) - { soap->mode |= SOAP_ENC_XML; - if (soap->count > SOAP_BUFLEN) - return soap->error = SOAP_UDP_ERROR; - } -#endif - if ((soap->mode & SOAP_IO) == SOAP_IO_FLUSH && soap_valid_socket(soap->socket)) - { if (soap->count || (soap->mode & SOAP_IO_LENGTH) || (soap->mode & SOAP_ENC_XML)) - soap->mode |= SOAP_IO_BUFFER; - else - soap->mode |= SOAP_IO_STORE; - } - soap->mode &= ~SOAP_IO_LENGTH; - if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) - if (soap_new_block(soap) == NULL) - return soap->error; - if (!(soap->mode & SOAP_IO_KEEPALIVE)) - soap->keep_alive = 0; - if (!soap->encodingStyle && !(soap->mode & SOAP_XML_GRAPH)) - soap->mode |= SOAP_XML_TREE; -#ifndef WITH_LEANER - if ((soap->mode & SOAP_ENC_MTOM) && (soap->mode & SOAP_ENC_DIME)) - { soap->mode |= SOAP_ENC_MIME; - soap->mode &= ~SOAP_ENC_DIME; - } - else if (!(soap->mode & SOAP_ENC_MIME)) - soap->mode &= ~SOAP_ENC_MTOM; - if (soap->mode & SOAP_ENC_MIME) - soap_select_mime_boundary(soap); -#ifdef WIN32 -#ifndef UNDER_CE -#ifndef WITH_FASTCGI - if (!soap_valid_socket(soap->socket)) /* Set win32 stdout or soap->sendfd to BINARY, e.g. to support DIME */ -#ifdef __BORLANDC__ - setmode(soap->sendfd, _O_BINARY); -#else - _setmode(soap->sendfd, _O_BINARY); -#endif -#endif -#endif -#endif -#endif - if (soap->mode & SOAP_IO) - { soap->bufidx = 0; - soap->buflen = 0; - } - soap->chunksize = 0; - soap->ns = 0; - soap->null = 0; - soap->position = 0; - soap->mustUnderstand = 0; - soap->encoding = 0; - soap->idnum = 0; - soap->level = 0; - soap_clr_attr(soap); - soap_set_local_namespaces(soap); -#ifdef WITH_ZLIB - soap->z_ratio_out = 1.0; - if ((soap->mode & SOAP_ENC_ZLIB) && soap->zlib_state != SOAP_ZLIB_DEFLATE) - { if (!soap->z_buf) - soap->z_buf = (char*)SOAP_MALLOC(soap, SOAP_BUFLEN); - soap->d_stream->next_out = (Byte*)soap->z_buf; - soap->d_stream->avail_out = SOAP_BUFLEN; -#ifdef WITH_GZIP - if (soap->zlib_out != SOAP_ZLIB_DEFLATE) - { memcpy(soap->z_buf, "\37\213\10\0\0\0\0\0\0\377", 10); - soap->d_stream->next_out = (Byte*)soap->z_buf + 10; - soap->d_stream->avail_out = SOAP_BUFLEN - 10; - soap->z_crc = crc32(0L, NULL, 0); - soap->zlib_out = SOAP_ZLIB_GZIP; - if (soap->z_dict) - *((Byte*)soap->z_buf + 2) = 0xff; - if (deflateInit2(soap->d_stream, soap->z_level, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - } - else -#endif - if (deflateInit(soap->d_stream, soap->z_level) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - if (soap->z_dict) - { if (deflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflate initialized\n")); - soap->zlib_state = SOAP_ZLIB_DEFLATE; - } -#endif -#ifdef WITH_OPENSSL - if (soap->ssl) - ERR_clear_error(); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Begin send phase (socket=%d mode=0x%x count=%lu)\n", soap->socket, soap->mode, (unsigned long)soap->count)); - soap->part = SOAP_BEGIN; -#ifndef WITH_LEANER - if (soap->fprepareinitsend && (soap->mode & SOAP_IO) == SOAP_IO_STORE) - soap->fprepareinitsend(soap); -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_embedded(struct soap *soap, const void *p, int t) -{ struct soap_plist *pp; - if (soap_pointer_lookup(soap, p, t, &pp)) - { pp->mark1 = 1; - pp->mark2 = 1; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded %p type=%d mark set to 1\n", p, t)); - } -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_reference(struct soap *soap, const void *p, int t) -{ struct soap_plist *pp; - if (!p || (soap->mode & SOAP_XML_TREE)) - return 1; - if (soap_pointer_lookup(soap, p, t, &pp)) - { if (pp->mark1 == 0) - { pp->mark1 = 2; - pp->mark2 = 2; - } - } - else if (soap_pointer_enter(soap, p, NULL, 0, t, &pp)) - { pp->mark1 = 0; - pp->mark2 = 0; - } - else - return 1; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reference %p type=%d (%d %d)\n", p, t, (int)pp->mark1, (int)pp->mark2)); - return pp->mark1; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_array_reference(struct soap *soap, const void *p, const struct soap_array *a, int n, int t) -{ register int i; - struct soap_plist *pp; - if (!p || !a->__ptr) - return 1; - i = soap_array_pointer_lookup(soap, p, a, n, t, &pp); - if (i) - { if (pp->mark1 == 0) - { pp->mark1 = 2; - pp->mark2 = 2; - } - } - else if (!soap_pointer_enter(soap, p, a, n, t, &pp)) - return 1; - else - { pp->mark1 = 0; - pp->mark2 = 0; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array reference %p ptr=%p dim=%d type=%d (%d %d)\n", p, a->__ptr, n, t, (int)pp->mark1, (int)pp->mark2)); - return pp->mark1; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_embedded_id(struct soap *soap, int id, const void *p, int t) -{ struct soap_plist *pp = NULL; - if (soap->mode & SOAP_XML_TREE) - return id; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded_id %p type=%d id=%d\n", p, t, id)); - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & SOAP_XML_GRAPH) && soap->part != SOAP_IN_HEADER) - { if (id < 0) - { id = soap_pointer_lookup(soap, p, t, &pp); - if (id) - { if (soap->mode & SOAP_IO_LENGTH) - pp->mark1 = 2; - else - pp->mark2 = 2; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded_id multiref id=%d %p type=%d = (%d %d)\n", id, p, t, (int)pp->mark1, (int)pp->mark2)); - } - return -1; - } - return id; - } - if (id < 0) - id = soap_pointer_lookup(soap, p, t, &pp); - else if (id && !soap_pointer_lookup(soap, p, t, &pp)) - return 0; - if (id && pp) - { if (soap->mode & SOAP_IO_LENGTH) - pp->mark1 = 1; - else - pp->mark2 = 1; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded_id embedded ref id=%d %p type=%d = (%d %d)\n", id, p, t, (int)pp->mark1, (int)pp->mark2)); - } - return id; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_is_embedded(struct soap *soap, struct soap_plist *pp) -{ if (!pp) - return 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Is embedded? %d %d\n", (int)pp->mark1, (int)pp->mark2)); - if (soap->version == 1 && soap->encodingStyle && !(soap->mode & SOAP_XML_GRAPH) && soap->part != SOAP_IN_HEADER) - { if (soap->mode & SOAP_IO_LENGTH) - return pp->mark1 != 0; - return pp->mark2 != 0; - } - if (soap->mode & SOAP_IO_LENGTH) - return pp->mark1 == 1; - return pp->mark2 == 1; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_is_single(struct soap *soap, struct soap_plist *pp) -{ if (soap->part == SOAP_IN_HEADER) - return 1; - if (!pp) - return 0; - if (soap->mode & SOAP_IO_LENGTH) - return pp->mark1 == 0; - return pp->mark2 == 0; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_embedded(struct soap *soap, struct soap_plist *pp) -{ if (!pp) - return; - if (soap->mode & SOAP_IO_LENGTH) - pp->mark1 = 1; - else - pp->mark2 = 1; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_attachment(struct soap *soap, const char *tag, int id, const void *p, const struct soap_array *a, const char *aid, const char *atype, const char *aoptions, int n, const char *type, int t) -{ -#ifndef WITH_NOIDREF - struct soap_plist *pp = NULL; /* Oracle customization */ - int i; - if (!p || !a->__ptr || (!aid && !atype)) - return soap_element_id(soap, tag, id, p, a, n, type, t); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Attachment tag='%s' id='%s' (%d) type='%s'\n", tag, aid?aid:SOAP_STR_EOS, id, atype?atype:SOAP_STR_EOS)); - i = soap_array_pointer_lookup(soap, p, a, n, t, &pp); - if (!i) - { i = soap_pointer_enter(soap, p, a, n, t, &pp); - if (!i) - { soap->error = SOAP_EOM; - return -1; - } - } - if (id <= 0) - id = i; - if (!aid) - { sprintf(soap->tmpbuf, soap->dime_id_format, id); - aid = soap_strdup(soap, soap->tmpbuf); - } - /* Add MTOM xop:Include element when necessary */ - /* TODO: this code to be obsoleted with new import/xop.h conventions */ - if ((soap->mode & SOAP_ENC_MTOM) && strcmp(tag, "xop:Include")) - { if (soap_element_begin_out(soap, tag, 0, type) - || soap_element_href(soap, "xop:Include", 0, "xmlns:xop=\"http://www.w3.org/2004/08/xop/include\" href", aid) - || soap_element_end_out(soap, tag)) - return soap->error; - } - else if (soap_element_href(soap, tag, 0, "href", aid)) - return soap->error; - if (soap->mode & SOAP_IO_LENGTH) - { if (pp && (pp->mark1 != 3)) /* Oracle customization */ - { struct soap_multipart *content; - if (soap->mode & SOAP_ENC_MTOM) - content = soap_new_multipart(soap, &soap->mime.first, &soap->mime.last, (char*)a->__ptr, a->__size); - else - content = soap_new_multipart(soap, &soap->dime.first, &soap->dime.last, (char*)a->__ptr, a->__size); - if (!content) - { soap->error = SOAP_EOM; - return -1; - } - if (!strncmp(aid, "cid:", 4)) /* RFC 2111 */ - { if (soap->mode & SOAP_ENC_MTOM) - { char *s = (char*)soap_malloc(soap, strlen(aid) - 1); - if (s) - { *s = '<'; - strcpy(s + 1, aid + 4); - strcat(s, ">"); - content->id = s; - } - } - else - content->id = aid + 4; - } - else - content->id = aid; - content->type = atype; - content->options = aoptions; - content->encoding = SOAP_MIME_BINARY; - pp->mark1 = 3; - } - } - else if (pp) /* Oracle customization */ - pp->mark2 = 3; -#endif - return -1; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -static void -soap_init_iht(struct soap *soap) -{ register int i; - for (i = 0; i < SOAP_IDHASH; i++) - soap->iht[i] = NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_1 -static void -soap_free_iht(struct soap *soap) -{ register int i; - register struct soap_ilist *ip = NULL, *p = NULL; - register struct soap_flist *fp = NULL, *fq = NULL; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free ID hashtable\n")); - for (i = 0; i < SOAP_IDHASH; i++) - { for (ip = soap->iht[i]; ip; ip = p) - { for (fp = ip->flist; fp; fp = fq) - { fq = fp->next; - SOAP_FREE(soap, fp); - } - p = ip->next; - SOAP_FREE(soap, ip); - } - soap->iht[i] = NULL; - } -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -struct soap_ilist * -SOAP_FMAC2 -soap_lookup(struct soap *soap, const char *id) -{ register struct soap_ilist *ip = NULL; - for (ip = soap->iht[soap_hash(id)]; ip; ip = ip->next) - if (!strcmp(ip->id, id)) - return ip; - return NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -struct soap_ilist * -SOAP_FMAC2 -soap_enter(struct soap *soap, const char *id) -{ register size_t h; - register struct soap_ilist *ip; - ip = (struct soap_ilist*)SOAP_MALLOC(soap, sizeof(struct soap_ilist) + strlen(id)); - if (ip) - { h = soap_hash(id); - strcpy(ip->id, id); - ip->next = soap->iht[h]; - soap->iht[h] = ip; - } - return ip; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void* -SOAP_FMAC2 -soap_malloc(struct soap *soap, size_t n) -{ register char *p; - if (!n) - return (void*)SOAP_NON_NULL; - if (!soap) - return SOAP_MALLOC(soap, n); - if (soap->fmalloc) - p = (char*)soap->fmalloc(soap, n); - else - { n += sizeof(short); - n += (-(long)n) & (sizeof(void*)-1); /* align at 4-, 8- or 16-byte boundary */ - if (!(p = (char*)SOAP_MALLOC(soap, n + sizeof(void*) + sizeof(size_t)))) - { soap->error = SOAP_EOM; - return NULL; - } - /* set the canary to detect corruption */ - *(unsigned short*)(p + n - sizeof(unsigned short)) = (unsigned short)SOAP_CANARY; - /* keep chain of alloced cells for destruction */ - *(void**)(p + n) = soap->alist; - *(size_t*)(p + n + sizeof(void*)) = n; - soap->alist = p + n; - } - soap->alloced = 1; - return p; -} -#endif - -/******************************************************************************/ -#ifdef SOAP_MEM_DEBUG -static void -soap_init_mht(struct soap *soap) -{ register int i; - for (i = 0; i < (int)SOAP_PTRHASH; i++) - soap->mht[i] = NULL; -} -#endif - -/******************************************************************************/ -#ifdef SOAP_MEM_DEBUG -static void -soap_free_mht(struct soap *soap) -{ register int i; - register struct soap_mlist *mp, *mq; - for (i = 0; i < (int)SOAP_PTRHASH; i++) - { for (mp = soap->mht[i]; mp; mp = mq) - { mq = mp->next; - if (mp->live) - { - fprintf(stderr, "%s(%d): malloc() = %p not freed (memory leak or forgot to call soap_end()?)\n", mp->file, mp->line, mp->ptr); -#ifndef WIN32 - (void) printstack( 2 ); /* Oracle customization */ -#endif - } - free(mp); - } - soap->mht[i] = NULL; - } -} -#endif - -/******************************************************************************/ -#ifdef SOAP_MEM_DEBUG -SOAP_FMAC1 -void* -SOAP_FMAC2 -soap_track_malloc(struct soap *soap, const char *file, int line, size_t size) -{ register void *p = malloc(size); - if (soap) - { register size_t h = soap_hash_ptr(p); - register struct soap_mlist *mp = (struct soap_mlist*)malloc(sizeof(struct soap_mlist)); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): malloc(%lu) = %p\n", file, line, (unsigned long)size, p)); - mp->next = soap->mht[h]; - mp->ptr = p; - mp->file = file; - mp->line = line; - mp->live = 1; - soap->mht[h] = mp; - } - return p; -} -#endif - -/******************************************************************************/ -#ifdef SOAP_MEM_DEBUG -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_track_free(struct soap *soap, const char *file, int line, void *p) -{ register size_t h = soap_hash_ptr(p); - register struct soap_mlist *mp; - for (mp = soap->mht[h]; mp; mp = mp->next) - if (mp->ptr == p) - break; - if (mp) - { if (mp->live) - { free(p); - if (soap->fdebug[SOAP_INDEX_TEST]) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): free(%p)\n", file, line, p)); - } - mp->live = 0; - } - else - fprintf(stderr, "%s(%d): free(%p) double free of pointer malloced at %s(%d)\n", file, line, p, mp->file, mp->line); - } - else - fprintf(stderr, "%s(%d): free(%p) pointer not malloced\n", file, line, p); -} -#endif - -/******************************************************************************/ -#ifdef SOAP_MEM_DEBUG -static void -soap_track_unlink(struct soap *soap, const void *p) -{ register size_t h = soap_hash_ptr(p); - register struct soap_mlist *mp; - for (mp = soap->mht[h]; mp; mp = mp->next) - if (mp->ptr == p) - break; - if (mp) - mp->live = 0; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_dealloc(struct soap *soap, void *p) -{ if (soap_check_state(soap)) - return; - if (p) - { register char **q; - for (q = (char**)&soap->alist; *q; q = *(char***)q) - { - if (*(unsigned short*)(char*)(*q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) - { -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); - DBGHEX(TEST, *q - 200, 200); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); - soap->error = SOAP_MOE; - return; - } - if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*)))) - { *q = **(char***)q; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Freed data at %p\n", p)); - SOAP_FREE(soap, p); - return; - } - } - soap_delete(soap, p); - } - else - { register char *q; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free all soap_malloc() data\n")); - while (soap->alist) - { q = (char*)soap->alist; - if (*(unsigned short*)(char*)(q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) - { -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); - DBGHEX(TEST, q - 200, 200); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); - soap->error = SOAP_MOE; - return; - } - soap->alist = *(void**)q; - q -= *(size_t*)(q + sizeof(void*)); - SOAP_FREE(soap, q); - } - /* we must assume these were deallocated: */ - soap->action = NULL; - soap->fault = NULL; - soap->header = NULL; - soap->userid = NULL; - soap->passwd = NULL; - soap->authrealm = NULL; - soap->http_content = NULL; -#ifndef WITH_LEANER - soap_clr_mime(soap); -#endif - } -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_delete(struct soap *soap, void *p) -{ register struct soap_clist **cp; - if (soap_check_state(soap)) - return; - cp = &soap->clist; - if (p) - { while (*cp) - { if (p == (*cp)->ptr) - { register struct soap_clist *q = *cp; - *cp = q->next; - if (q->fdelete(q)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: deletion callback failed for object type %d\n", q->ptr, q->type)); -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "new(object type = %d) = %p not freed: deletion callback failed\n", q->type, q->ptr); -#endif - } - SOAP_FREE(soap, q); - return; - } - cp = &(*cp)->next; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: address not in list\n", p)); - } - else - { while (*cp) - { register struct soap_clist *q = *cp; - *cp = q->next; - if (q->fdelete(q)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: deletion callback failed for object type %d\n", q->ptr, q->type)); -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "new(object type = %d) = %p not freed: deletion callback failed\n", q->type, q->ptr); -#endif - } - SOAP_FREE(soap, q); - } - } - soap->fault = NULL; /* this was possibly deallocated */ - soap->header = NULL; /* this was possibly deallocated */ -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_delegate_deletion(struct soap *soap, struct soap *soap_to) -{ register struct soap_clist *cp; - register char **q; -#ifdef SOAP_MEM_DEBUG - register void *p; - register struct soap_mlist **mp, *mq; - size_t h; -#endif - for (q = (char**)&soap->alist; *q; q = *(char***)q) - { - if (*(unsigned short*)(char*)(*q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) - { -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); - DBGHEX(TEST, *q - 200, 200); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); - soap->error = SOAP_MOE; - return; - } -#ifdef SOAP_MEM_DEBUG - p = (void*)(*q - *(size_t*)(*q + sizeof(void*))); - h = soap_hash_ptr(p); - for (mp = &soap->mht[h]; *mp; mp = &(*mp)->next) - { if ((*mp)->ptr == p) - { mq = *mp; - *mp = mq->next; - mq->next = soap_to->mht[h]; - soap_to->mht[h] = mq; - break; - } - } -#endif - } - *q = (char*)soap_to->alist; - soap_to->alist = soap->alist; - soap->alist = NULL; - cp = soap_to->clist; - if (cp) - { while (cp->next) - cp = cp->next; - cp->next = soap->clist; - } - else - soap_to->clist = soap->clist; - soap->clist = NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -struct soap_clist * -SOAP_FMAC2 -soap_link(struct soap *soap, void *p, int t, int n, int (*fdelete)(struct soap_clist*)) -{ register struct soap_clist *cp; - if ((cp = (struct soap_clist*)SOAP_MALLOC(soap, sizeof(struct soap_clist)))) - { cp->next = soap->clist; - cp->type = t; - cp->size = n; - cp->ptr = p; - cp->fdelete = fdelete; - soap->clist = cp; - } - return cp; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_unlink(struct soap *soap, const void *p) -{ register char **q; - register struct soap_clist **cp; - if (!soap || !p) - return; - for (q = (char**)&soap->alist; *q; q = *(char***)q) - { if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*)))) - { *q = **(char***)q; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unlinked data %p\n", p)); -#ifdef SOAP_MEM_DEBUG - soap_track_unlink(soap, p); -#endif - return; - } - } - for (cp = &soap->clist; *cp; cp = &(*cp)->next) - { if (p == (*cp)->ptr) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unlinked class instance %p\n", p)); - q = (char**)*cp; - *cp = (*cp)->next; - SOAP_FREE(soap, q); - return; - } - } -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_lookup_type(struct soap *soap, const char *id) -{ register struct soap_ilist *ip; - if (id && *id) - { ip = soap_lookup(soap, id); - if (ip) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup id='%s' type=%d\n", id, ip->type)); - return ip->type; - } - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "lookup type id='%s' NOT FOUND! Need to get it from xsi:type\n", id)); - return 0; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -void* -SOAP_FMAC2 -soap_id_lookup(struct soap *soap, const char *id, void **p, int t, size_t n, unsigned int k) -{ struct soap_ilist *ip; - void **q; - if (!p || !id || !*id) - return p; - ip = soap_lookup(soap, id); /* lookup pointer to hash table entry for string id */ - if (!ip) - { if (!(ip = soap_enter(soap, id))) /* new hash table entry for string id */ - return NULL; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding first href='%s' type=%d %p (%u bytes)\n", id, t, p, (unsigned int)n)); - ip->type = t; - ip->size = n; - ip->link = p; - ip->copy = NULL; - ip->flist = NULL; - ip->ptr = NULL; - ip->level = k; - *p = NULL; - } - else if (ip->ptr) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolved href='%s' type=%d location=%p (%u bytes)\n", id, t, ip->ptr, (unsigned int)n)); - if (ip->type != t) - { - /* Oracle customization */ - strncpy(soap->id, id, sizeof(soap->id) - 1); - soap->id[sizeof(soap->id) - 1] = '\0'; - soap->error = SOAP_HREF; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Type incompatibility: href='%s' id-type=%d href-type=%d\n", id, ip->type, t)); - return NULL; - } - while (ip->level < k) - { q = (void**)soap_malloc(soap, sizeof(void*)); - if (!q) - return NULL; - *p = (void*)q; - p = q; - k--; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level...\n")); - } - *p = ip->ptr; - } - else if (ip->level > k) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving level %u pointers to href='%s'\n", ip->level, id)); - while (ip->level > k) - { void *s, **r = &ip->link; - q = (void**)ip->link; - while (q) - { *r = (void*)soap_malloc(soap, sizeof(void*)); - if (!*r) - return NULL; - s = *q; - *q = *r; - r = (void**)*r; - q = (void**)s; - } - *r = NULL; - ip->size = n; - ip->copy = NULL; - ip->level = ip->level - 1; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level...\n")); - } - q = (void**)ip->link; - ip->link = p; - *p = (void*)q; - } - else - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarded href='%s' type=%d location=%p (%u bytes)\n", id, t, p, (unsigned int)n)); - while (ip->level < k) - { q = (void**)soap_malloc(soap, sizeof(void*)); - if (!q) - return NULL; - *p = q; - p = q; - k--; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Descending one level...\n")); - } - q = (void**)ip->link; - ip->link = p; - *p = (void*)q; - } - return p; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIDREF -#ifndef PALM_2 -SOAP_FMAC1 -void* -SOAP_FMAC2 -soap_id_forward(struct soap *soap, const char *href, void *p, size_t len, int st, int tt, size_t n, unsigned int k, void (*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t)) -{ struct soap_ilist *ip; - if (!p || !href || !*href) - return p; - ip = soap_lookup(soap, href); /* lookup pointer to hash table entry for string id */ - if (!ip) - { if (!(ip = soap_enter(soap, href))) /* new hash table entry for string id */ - return NULL; - ip->type = st; - ip->size = n; - ip->link = NULL; - ip->copy = NULL; - ip->ptr = NULL; - ip->level = 0; - ip->flist = NULL; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "New entry href='%s' type=%d size=%lu level=%d location=%p\n", href, st, (unsigned long)n, k, p)); - } - else if (ip->type != st || (ip->level == k && ip->size != n)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Type incompatibility id='%s' expect type=%d size=%lu level=%u got type=%d size=%lu\n", href, ip->type, (unsigned long)ip->size, k, st, (unsigned long)n)); - /* Oracle customization */ - strncpy(soap->id, href, sizeof(soap->id) - 1); - soap->id[sizeof(soap->id) - 1] = '\0'; - soap->error = SOAP_HREF; - return NULL; - } - if (fcopy || n < sizeof(void*) || *href != '#') - { register struct soap_flist *fp = (struct soap_flist*)SOAP_MALLOC(soap, sizeof(struct soap_flist)); - if (!fp) - { soap->error = SOAP_EOM; - return NULL; - } - fp->next = ip->flist; - fp->type = tt; - fp->ptr = p; - fp->level = k; - fp->len = len; - if (fcopy) - fp->fcopy = fcopy; - else - fp->fcopy = soap_fcopy; - ip->flist = fp; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding type=%d (target type=%d) size=%lu location=%p level=%u len=%lu href='%s'\n", st, tt, (unsigned long)n, p, k, (unsigned long)len, href)); - } - else - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding copying address %p for type=%d href='%s'\n", p, st, href)); - *(void**)p = ip->copy; - ip->copy = p; - } - return p; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void* -SOAP_FMAC2 -soap_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, unsigned int k, const char *type, const char *arrayType, void *(*finstantiate)(struct soap*, int, const char*, const char*, size_t*)) -{ -#ifndef WITH_NOIDREF - struct soap_ilist *ip; -#endif - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Enter id='%s' type=%d loc=%p size=%lu level=%u\n", id, t, p, (unsigned long)n, k)); - soap->alloced = 0; - if (!p) - { if (finstantiate) - p = finstantiate(soap, t, type, arrayType, &n); - else - p = soap_malloc(soap, n); - if (p) - soap->alloced = 1; - } -#ifndef WITH_NOIDREF - if (!id || !*id) -#endif - return p; -#ifndef WITH_NOIDREF - ip = soap_lookup(soap, id); /* lookup pointer to hash table entry for string id */ - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Lookup entry id='%s for location=%p'\n", id, p)); - if (!ip) - { if (!(ip = soap_enter(soap, id))) /* new hash table entry for string id */ - return NULL; - ip->type = t; - ip->link = NULL; - ip->copy = NULL; - ip->flist = NULL; - ip->size = n; - ip->ptr = p; - ip->level = k; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "New entry id='%s' type=%d size=%lu level=%u location=%p\n", id, t, (unsigned long)n, k, p)); - } - else if ((ip->type != t || (ip->level == k && ip->size != n)) && (ip->copy || ip->flist)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Type incompatibility id='%s' expect type=%d size=%lu level=%u got type=%d size=%lu\n", id, ip->type, (unsigned long)ip->size, k, t, (unsigned long)n)); - /* Oracle customization */ - strncpy(soap->id, id, sizeof(soap->id) - 1); - soap->id[sizeof(soap->id) - 1] = '\0'; - soap->error = SOAP_HREF; - return NULL; - } - else if (ip->ptr) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Multiply defined id='%s'\n", id)); - /* Oracle customization */ - strncpy(soap->id, id, sizeof(soap->id) - 1); - soap->id[sizeof(soap->id) - 1] = '\0'; - soap->error = SOAP_DUPLICATE_ID; - return NULL; - } - else - { ip->size = n; - ip->ptr = p; - ip->level = k; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update entry id='%s' type=%d location=%p size=%lu level=%u\n", id, t, p, (unsigned long)n, k)); - } - return ip->ptr; -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) -{ DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Copying data type=%d (target type=%d) %p -> %p (%lu bytes)\n", st, tt, q, p, (unsigned long)n)); - memcpy(p, q, n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_end_send(struct soap *soap) -{ -#ifndef WITH_LEANER - int err; - if (soap->dime.list) - { /* SOAP body referenced attachments must appear first */ - soap->dime.last->next = soap->dime.first; - soap->dime.first = soap->dime.list->next; - soap->dime.list->next = NULL; - soap->dime.last = soap->dime.list; - } - if (!(err = soap_putdime(soap))) - err = soap_putmime(soap); - soap->mime.list = NULL; - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->dime.list = NULL; - soap->dime.first = NULL; - soap->dime.last = NULL; - if (err) - return err; -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End send\n")); - if (soap->mode & SOAP_IO) /* need to flush the remaining data in buffer */ - { if (soap_flush(soap)) -#ifdef WITH_ZLIB - { if (soap->mode & SOAP_ENC_ZLIB && soap->zlib_state == SOAP_ZLIB_DEFLATE) - { soap->zlib_state = SOAP_ZLIB_NONE; - deflateEnd(soap->d_stream); - } - return soap->error; - } -#else - return soap->error; -#endif -#ifdef WITH_ZLIB - if (soap->mode & SOAP_ENC_ZLIB) - { int r; - soap->d_stream->avail_in = 0; - do - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflating remainder\n")); - r = deflate(soap->d_stream, Z_FINISH); - if (soap->d_stream->avail_out != SOAP_BUFLEN) - { if (soap_flush_raw(soap, soap->z_buf, SOAP_BUFLEN - soap->d_stream->avail_out)) - { soap->zlib_state = SOAP_ZLIB_NONE; - deflateEnd(soap->d_stream); - return soap->error; - } - soap->d_stream->next_out = (Byte*)soap->z_buf; - soap->d_stream->avail_out = SOAP_BUFLEN; - } - } while (r == Z_OK); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflated total %lu->%lu bytes\n", soap->d_stream->total_in, soap->d_stream->total_out)); - soap->z_ratio_out = (float)soap->d_stream->total_out / (float)soap->d_stream->total_in; - soap->mode &= ~SOAP_ENC_ZLIB; - soap->zlib_state = SOAP_ZLIB_NONE; - if (deflateEnd(soap->d_stream) != Z_OK || r != Z_STREAM_END) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unable to end deflate: %s\n", soap->d_stream->msg?soap->d_stream->msg:SOAP_STR_EOS)); - return soap->error = SOAP_ZLIB_ERROR; - } -#ifdef WITH_GZIP - if (soap->zlib_out != SOAP_ZLIB_DEFLATE) - { soap->z_buf[0] = soap->z_crc & 0xFF; - soap->z_buf[1] = (soap->z_crc >> 8) & 0xFF; - soap->z_buf[2] = (soap->z_crc >> 16) & 0xFF; - soap->z_buf[3] = (soap->z_crc >> 24) & 0xFF; - soap->z_buf[4] = soap->d_stream->total_in & 0xFF; - soap->z_buf[5] = (soap->d_stream->total_in >> 8) & 0xFF; - soap->z_buf[6] = (soap->d_stream->total_in >> 16) & 0xFF; - soap->z_buf[7] = (soap->d_stream->total_in >> 24) & 0xFF; - if (soap_flush_raw(soap, soap->z_buf, 8)) - return soap->error; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "gzip crc32=%lu\n", (unsigned long)soap->z_crc)); - } -#endif - } -#endif - if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) - { char *p; -#ifndef WITH_NOHTTP - if (!(soap->mode & SOAP_ENC_XML)) - { soap->mode--; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending buffered message of length %u\n", (unsigned int)soap->blist->size)); - if (soap->status >= SOAP_POST) - soap->error = soap->fpost(soap, soap->endpoint, soap->host, soap->port, soap->path, soap->action, soap->blist->size); - else if (soap->status != SOAP_STOP) - soap->error = soap->fresponse(soap, soap->status, soap->blist->size); - if (soap->error || soap_flush(soap)) - return soap->error; - soap->mode++; - } -#endif - for (p = soap_first_block(soap, NULL); p; p = soap_next_block(soap, NULL)) - { DBGMSG(SENT, p, soap_block_size(soap, NULL)); - if ((soap->error = soap->fsend(soap, p, soap_block_size(soap, NULL)))) - { soap_end_block(soap, NULL); - return soap->error; - } - } - soap_end_block(soap, NULL); - } -#ifndef WITH_LEANER - else if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) - { DBGMSG(SENT, "\r\n0\r\n\r\n", 7); - if ((soap->error = soap->fsend(soap, "\r\n0\r\n\r\n", 7))) - return soap->error; - } -#endif - } -#ifdef WITH_TCPFIN -#ifdef WITH_OPENSSL - if (!soap->ssl && soap_valid_socket(soap->socket) && !soap->keep_alive && !(soap->omode & SOAP_IO_UDP)) - soap->fshutdownsocket(soap, soap->socket, 1); /* Send TCP FIN */ -#else - if (soap_valid_socket(soap->socket) && !soap->keep_alive && !(soap->omode & SOAP_IO_UDP)) - soap->fshutdownsocket(soap, soap->socket, 1); /* Send TCP FIN */ -#endif -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of send phase\n")); - soap->omode &= ~SOAP_XML_SEC; - soap->count = 0; - soap->part = SOAP_END; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_end_recv(struct soap *soap) -{ soap->part = SOAP_END; -#ifndef WITH_LEAN - soap->wsuid = NULL; /* reset before next send */ - soap->c14nexclude = NULL; /* reset before next send */ -#endif -#ifndef WITH_LEANER - if ((soap->mode & SOAP_ENC_DIME) && soap_getdime(soap)) - { soap->dime.first = NULL; - soap->dime.last = NULL; - return soap->error; - } - soap->dime.list = soap->dime.first; - soap->dime.first = NULL; - soap->dime.last = NULL; - /* Check if MIME attachments and mime-post-check flag is set, if set call soap_resolve() and return */ - if (soap->mode & SOAP_ENC_MIME) - { -#ifndef WITH_NOIDREF - if (soap->mode & SOAP_MIME_POSTCHECK) - { soap_resolve(soap); - return SOAP_OK; - } -#endif - if (soap_getmime(soap)) - return soap->error; - } - soap->mime.list = soap->mime.first; - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->mime.boundary = NULL; - if (soap->xlist) - { struct soap_multipart *content; - for (content = soap->mime.list; content; content = content->next) - soap_resolve_attachment(soap, content); - } -#endif - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "End of receive message ok\n")); -#ifdef WITH_ZLIB - if (soap->mode & SOAP_ENC_ZLIB) - { /* Make sure end of compressed content is reached */ - while (soap->d_stream->next_out != Z_NULL) - if ((int)soap_get1(soap) == EOF) - break; - soap->mode &= ~SOAP_ENC_ZLIB; - memcpy(soap->buf, soap->z_buf, SOAP_BUFLEN); - soap->bufidx = (char*)soap->d_stream->next_in - soap->z_buf; - soap->buflen = soap->z_buflen; - soap->zlib_state = SOAP_ZLIB_NONE; - if (inflateEnd(soap->d_stream) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Inflate end ok\n")); -#ifdef WITH_GZIP - if (soap->zlib_in == SOAP_ZLIB_GZIP) - { soap_wchar c; - short i; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Inflate gzip crc check\n")); - for (i = 0; i < 8; i++) - { if ((int)(c = soap_get1(soap)) == EOF) - return soap->error = SOAP_EOF; - soap->z_buf[i] = (char)c; - } - if (soap->z_crc != ((uLong)(unsigned char)soap->z_buf[0] | ((uLong)(unsigned char)soap->z_buf[1] << 8) | ((uLong)(unsigned char)soap->z_buf[2] << 16) | ((uLong)(unsigned char)soap->z_buf[3] << 24))) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Gzip error: crc check failed, message corrupted? (crc32=%lu)\n", (unsigned long)soap->z_crc)); - return soap->error = SOAP_ZLIB_ERROR; - } - if (soap->d_stream->total_out != ((uLong)(unsigned char)soap->z_buf[4] | ((uLong)(unsigned char)soap->z_buf[5] << 8) | ((uLong)(unsigned char)soap->z_buf[6] << 16) | ((uLong)(unsigned char)soap->z_buf[7] << 24))) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Gzip error: incorrect message length\n")); - return soap->error = SOAP_ZLIB_ERROR; - } - } - soap->zlib_in = SOAP_ZLIB_NONE; -#endif - } -#endif - if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) - while ((int)soap_getchar(soap) != EOF) /* advance to last chunk */ - ; -#ifndef WITH_NOIDREF - if (soap_resolve(soap)) - return soap->error; -#endif -#ifndef WITH_LEANER - if (soap->xlist) - { if (soap->mode & SOAP_ENC_MTOM) - return soap->error = SOAP_MIME_HREF; - return soap->error = SOAP_DIME_HREF; - } -#endif - soap_free_ns(soap); -#ifndef WITH_LEANER - if (soap->fpreparefinalrecv) - return soap->error = soap->fpreparefinalrecv(soap); -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_free_temp(struct soap *soap) -{ register struct soap_attribute *tp, *tq; - register struct Namespace *ns; - soap_free_ns(soap); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free any remaining temp blocks\n")); - while (soap->blist) - soap_end_block(soap, NULL); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free attribute storage\n")); - for (tp = soap->attributes; tp; tp = tq) - { tq = tp->next; - if (tp->value) - SOAP_FREE(soap, tp->value); - SOAP_FREE(soap, tp); - } - soap->attributes = NULL; -#ifdef WITH_FAST - if (soap->labbuf) - SOAP_FREE(soap, soap->labbuf); - soap->labbuf = NULL; - soap->lablen = 0; - soap->labidx = 0; -#endif - ns = soap->local_namespaces; - if (ns) - { for (; ns->id; ns++) - { if (ns->out) - { if (soap->encodingStyle == ns->out) - soap->encodingStyle = SOAP_STR_EOS; - SOAP_FREE(soap, ns->out); - ns->out = NULL; - } - if (soap->encodingStyle == ns->ns) - soap->encodingStyle = SOAP_STR_EOS; - } - SOAP_FREE(soap, soap->local_namespaces); - soap->local_namespaces = NULL; - } -#ifndef WITH_LEANER - while (soap->xlist) - { struct soap_xlist *xp = soap->xlist->next; - SOAP_FREE(soap, soap->xlist); - soap->xlist = xp; - } -#endif -#ifndef WITH_NOIDREF - soap_free_pht(soap); - soap_free_iht(soap); -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static void -soap_free_ns(struct soap *soap) -{ register struct soap_nlist *np, *nq; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free namespace stack\n")); - for (np = soap->nlist; np; np = nq) - { nq = np->next; - SOAP_FREE(soap, np); - } - soap->nlist = NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -#if !defined(WITH_LEAN) || defined(SOAP_DEBUG) -static void -soap_init_logs(struct soap *soap) -{ int i; - for (i = 0; i < SOAP_MAXLOGS; i++) - { soap->logfile[i] = NULL; - soap->fdebug[i] = NULL; - } -} -#endif -#endif - -/******************************************************************************/ -#if !defined(WITH_LEAN) || defined(SOAP_DEBUG) -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_open_logfile(struct soap *soap, int i) -{ if (soap->logfile[i]) - soap->fdebug[i] = fopen(soap->logfile[i], i < 2 ? "ab" : "a"); -} -#endif - -/******************************************************************************/ -#ifdef SOAP_DEBUG -static void -soap_close_logfile(struct soap *soap, int i) -{ if (soap->fdebug[i]) - { fclose(soap->fdebug[i]); - soap->fdebug[i] = NULL; - } -} -#endif - -/******************************************************************************/ -#ifdef SOAP_DEBUG -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_close_logfiles(struct soap *soap) -{ int i; - for (i = 0; i < SOAP_MAXLOGS; i++) - soap_close_logfile(soap, i); -} -#endif - -/******************************************************************************/ -#ifdef SOAP_DEBUG -static void -soap_set_logfile(struct soap *soap, int i, const char *logfile) -{ const char *s; - char *t = NULL; - soap_close_logfile(soap, i); - s = soap->logfile[i]; - soap->logfile[i] = logfile; - if (s) - SOAP_FREE(soap, (void*)s); - if (logfile) - if ((t = (char*)SOAP_MALLOC(soap, strlen(logfile) + 1))) - strcpy(t, logfile); - soap->logfile[i] = t; -} -#endif - -/******************************************************************************/ -#ifdef SOAP_DEBUG -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_recv_logfile(struct soap *soap, const char *logfile) -{ soap_set_logfile(soap, SOAP_INDEX_RECV, logfile); -} -#endif - -/******************************************************************************/ -#ifdef SOAP_DEBUG -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_sent_logfile(struct soap *soap, const char *logfile) -{ soap_set_logfile(soap, SOAP_INDEX_SENT, logfile); -} -#endif - -/******************************************************************************/ -#ifdef SOAP_DEBUG -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_test_logfile(struct soap *soap, const char *logfile) -{ soap_set_logfile(soap, SOAP_INDEX_TEST, logfile); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -struct soap* -SOAP_FMAC2 -soap_copy(const struct soap *soap) -{ return soap_copy_context((struct soap*)malloc(sizeof(struct soap)), soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -struct soap* -SOAP_FMAC2 -soap_copy_context(struct soap *copy, const struct soap *soap) -{ if (soap_check_state(soap)) - return NULL; - if (copy) - { register struct soap_plugin *p = NULL; -#ifdef __cplusplus - *copy = *soap; -#else - memcpy(copy, soap, sizeof(struct soap)); -#endif - copy->state = SOAP_COPY; - copy->error = SOAP_OK; - copy->userid = NULL; - copy->passwd = NULL; - copy->nlist = NULL; - copy->blist = NULL; - copy->clist = NULL; - copy->alist = NULL; - copy->attributes = NULL; - copy->labbuf = NULL; - copy->lablen = 0; - copy->labidx = 0; -#ifdef SOAP_MEM_DEBUG - soap_init_mht(copy); -#endif -#if !defined(WITH_LEAN) || defined(SOAP_DEBUG) - soap_init_logs(copy); -#endif -#ifdef SOAP_DEBUG - soap_set_test_logfile(copy, soap->logfile[SOAP_INDEX_TEST]); - soap_set_sent_logfile(copy, soap->logfile[SOAP_INDEX_SENT]); - soap_set_recv_logfile(copy, soap->logfile[SOAP_INDEX_RECV]); -#endif -#ifdef WITH_C_LOCALE - copy->c_locale = duplocale(soap->c_locale); -#else - copy->c_locale = NULL; -#endif -#ifdef WITH_OPENSSL - copy->bio = NULL; - copy->ssl = NULL; - copy->session = NULL; -#endif -#ifdef WITH_ZLIB - copy->d_stream = (z_stream*)SOAP_MALLOC(copy, sizeof(z_stream)); - copy->d_stream->zalloc = Z_NULL; - copy->d_stream->zfree = Z_NULL; - copy->d_stream->opaque = Z_NULL; - copy->z_buf = NULL; -#endif - copy->local_namespaces = NULL; -#ifndef WITH_NOIDREF - soap_init_iht(copy); - soap_init_pht(copy); -#endif - copy->header = NULL; - copy->fault = NULL; - copy->action = NULL; -#ifndef WITH_LEAN -#ifdef WITH_COOKIES - copy->cookies = soap_copy_cookies(copy, soap); -#else - copy->cookies = NULL; -#endif -#endif - copy->plugins = NULL; - for (p = soap->plugins; p; p = p->next) - { register struct soap_plugin *q = (struct soap_plugin*)SOAP_MALLOC(copy, sizeof(struct soap_plugin)); - if (!q) - return NULL; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying plugin '%s'\n", p->id)); - *q = *p; - if (p->fcopy && p->fcopy(copy, q, p)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not copy plugin '%s'\n", p->id)); - SOAP_FREE(copy, q); - return NULL; - } - q->next = copy->plugins; - copy->plugins = q; - } - } - return copy; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_copy_stream(struct soap *copy, struct soap *soap) -{ copy->mode = soap->mode; - copy->imode = soap->imode; - copy->omode = soap->omode; - copy->socket = soap->socket; - copy->recv_timeout = soap->recv_timeout; - copy->send_timeout = soap->send_timeout; -#if defined(__cplusplus) && !defined(WITH_LEAN) - copy->os = soap->os; - copy->is = soap->is; -#endif - copy->sendfd = soap->sendfd; - copy->recvfd = soap->recvfd; - copy->bufidx = soap->bufidx; - copy->buflen = soap->buflen; - copy->ahead = soap->ahead; - copy->cdata = soap->cdata; - copy->chunksize = soap->chunksize; - copy->chunkbuflen = soap->chunkbuflen; - copy->keep_alive = soap->keep_alive; - copy->tcp_keep_alive = soap->tcp_keep_alive; - copy->tcp_keep_idle = soap->tcp_keep_idle; - copy->tcp_keep_intvl = soap->tcp_keep_intvl; - copy->tcp_keep_cnt = soap->tcp_keep_cnt; - copy->max_keep_alive = soap->max_keep_alive; -#ifndef WITH_NOIO - copy->peer = soap->peer; - copy->peerlen = soap->peerlen; -#endif -#ifdef WITH_OPENSSL - copy->bio = soap->bio; - copy->ssl = soap->ssl; - copy->ctx = soap->ctx; -#endif -#ifdef WITH_ZLIB - copy->zlib_state = soap->zlib_state; - copy->zlib_in = soap->zlib_in; - copy->zlib_out = soap->zlib_out; - copy->d_stream = (z_stream*)SOAP_MALLOC(copy, sizeof(z_stream)); - memcpy(copy->d_stream, soap->d_stream, sizeof(z_stream)); - copy->z_crc = soap->z_crc; - copy->z_ratio_in = soap->z_ratio_in; - copy->z_ratio_out = soap->z_ratio_out; - copy->z_buf = NULL; - copy->z_buflen = soap->z_buflen; - copy->z_level = soap->z_level; - if (soap->z_buf && soap->zlib_state != SOAP_ZLIB_NONE) - { copy->z_buf = (char*)SOAP_MALLOC(copy, SOAP_BUFLEN); - memcpy(copy->z_buf, soap->z_buf, sizeof(soap->z_buf)); - } - copy->z_dict = soap->z_dict; - copy->z_dict_len = soap->z_dict_len; -#endif - memcpy(copy->buf, soap->buf, sizeof(soap->buf)); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_free_stream(struct soap *soap) -{ soap->socket = SOAP_INVALID_SOCKET; -#ifdef WITH_OPENSSL - soap->bio = NULL; - soap->ssl = NULL; -#endif -#ifdef WITH_ZLIB - if (soap->d_stream) - SOAP_FREE(soap, soap->d_stream); - soap->d_stream = NULL; - if (soap->z_buf) - SOAP_FREE(soap, soap->z_buf); - soap->z_buf = NULL; -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_init(struct soap *soap) -{ soap->state = SOAP_INIT; -#ifdef SOAP_MEM_DEBUG - soap_init_mht(soap); -#endif -#if !defined(WITH_LEAN) || defined(SOAP_DEBUG) - soap_init_logs(soap); -#endif -#ifdef SOAP_DEBUG -/* - Oracle customization for KMS server debug -*/ -#ifdef SOAP_DEBUG_SERVER - soap_set_test_logfile(soap, "/var/log/SUNWkms2/TEST.log"); - soap_set_sent_logfile(soap, "/var/log/SUNWkms2/SENT.log"); - soap_set_recv_logfile(soap, "/var/log/SUNWkms2/RECV.log"); -#else - soap_set_test_logfile(soap, "TEST.log"); - soap_set_sent_logfile(soap, "SENT.log"); - soap_set_recv_logfile(soap, "RECV.log"); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Initializing context\n")); -#endif - soap->version = 0; - soap_imode(soap, SOAP_IO_DEFAULT); - soap_omode(soap, SOAP_IO_DEFAULT); - soap->plugins = NULL; - soap->user = NULL; - soap->userid = NULL; - soap->passwd = NULL; -#ifndef WITH_NOHTTP - soap->fpost = http_post; - soap->fget = http_get; - soap->fput = http_405; - soap->fdel = http_405; - soap->fhead = http_405; - soap->fform = NULL; - soap->fposthdr = http_post_header; - soap->fresponse = http_response; - soap->fparse = http_parse; - soap->fparsehdr = http_parse_header; -#endif - soap->fheader = NULL; - soap->fconnect = NULL; - soap->fdisconnect = NULL; -#ifndef WITH_NOIO - soap->ipv6_multicast_if = 0; - soap->ipv4_multicast_if = NULL; -#ifndef WITH_IPV6 - soap->fresolve = tcp_gethost; -#else - soap->fresolve = NULL; -#endif - soap->faccept = tcp_accept; - soap->fopen = tcp_connect; - soap->fclose = tcp_disconnect; - soap->fclosesocket = tcp_closesocket; - soap->fshutdownsocket = tcp_shutdownsocket; - soap->fsend = fsend; - soap->frecv = frecv; - soap->fpoll = soap_poll; -#else - soap->fopen = NULL; - soap->fclose = NULL; - soap->fpoll = NULL; -#endif - soap->fseterror = NULL; - soap->fignore = NULL; - soap->fserveloop = NULL; - soap->fplugin = fplugin; - soap->fmalloc = NULL; -#ifndef WITH_LEANER - soap->fprepareinitsend = NULL; - soap->fprepareinitrecv = NULL; - soap->fpreparesend = NULL; - soap->fpreparerecv = NULL; - soap->fpreparefinalsend = NULL; - soap->fpreparefinalrecv = NULL; - soap->fdimereadopen = NULL; - soap->fdimewriteopen = NULL; - soap->fdimereadclose = NULL; - soap->fdimewriteclose = NULL; - soap->fdimeread = NULL; - soap->fdimewrite = NULL; - soap->fmimereadopen = NULL; - soap->fmimewriteopen = NULL; - soap->fmimereadclose = NULL; - soap->fmimewriteclose = NULL; - soap->fmimeread = NULL; - soap->fmimewrite = NULL; -#endif - soap->float_format = "%.9G"; /* Alternative: use "%G" */ - soap->double_format = "%.17lG"; /* Alternative: use "%lG" */ - soap->dime_id_format = "cid:id%d"; /* default DIME id format */ - soap->http_version = "1.1"; - soap->proxy_http_version = "1.0"; - soap->http_content = NULL; - soap->actor = NULL; - soap->lang = "en"; - soap->keep_alive = 0; - soap->tcp_keep_alive = 0; - soap->tcp_keep_idle = 0; - soap->tcp_keep_intvl = 0; - soap->tcp_keep_cnt = 0; - soap->max_keep_alive = SOAP_MAXKEEPALIVE; - soap->recv_timeout = 0; - soap->send_timeout = 0; - soap->connect_timeout = 0; - soap->accept_timeout = 0; -#if defined(WITH_OPENSSL) && defined(KMS_SERVER) - /* Oracle customization for Ultra 2 KMS Server */ - soap->ssl_accept_timeout = 0; -#endif - soap->socket_flags = 0; - soap->connect_flags = 0; - soap->bind_flags = 0; - soap->accept_flags = 0; - soap->linger_time = 0; - soap->ip = 0; - soap->labbuf = NULL; - soap->lablen = 0; - soap->labidx = 0; - soap->encodingStyle = SOAP_STR_EOS; -#ifndef WITH_NONAMESPACES - soap->namespaces = namespaces; -#else - soap->namespaces = NULL; -#endif - soap->local_namespaces = NULL; - soap->nlist = NULL; - soap->blist = NULL; - soap->clist = NULL; - soap->alist = NULL; - soap->attributes = NULL; - soap->header = NULL; - soap->fault = NULL; - soap->master = SOAP_INVALID_SOCKET; - soap->socket = SOAP_INVALID_SOCKET; - soap->os = NULL; - soap->is = NULL; -#ifndef WITH_LEANER - soap->dom = NULL; - soap->dime.list = NULL; - soap->dime.first = NULL; - soap->dime.last = NULL; - soap->mime.list = NULL; - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->mime.boundary = NULL; - soap->mime.start = NULL; - soap->xlist = NULL; -#endif -#ifndef UNDER_CE - soap->recvfd = 0; - soap->sendfd = 1; -#else - soap->recvfd = stdin; - soap->sendfd = stdout; -#endif - soap->host[0] = '\0'; - soap->session_host[0] = '\0'; /* Oracle customization */ - soap->session_port = 0; /* Oracle customization */ - soap->port = 0; - soap->action = NULL; - soap->proxy_host = NULL; - soap->proxy_port = 8080; - soap->proxy_userid = NULL; - soap->proxy_passwd = NULL; - soap->authrealm = NULL; - soap->prolog = NULL; -#ifdef WITH_ZLIB - soap->zlib_state = SOAP_ZLIB_NONE; - soap->zlib_in = SOAP_ZLIB_NONE; - soap->zlib_out = SOAP_ZLIB_NONE; - soap->d_stream = (z_stream*)SOAP_MALLOC(soap, sizeof(z_stream)); - soap->d_stream->zalloc = Z_NULL; - soap->d_stream->zfree = Z_NULL; - soap->d_stream->opaque = Z_NULL; - soap->z_buf = NULL; - soap->z_level = 6; - soap->z_dict = NULL; - soap->z_dict_len = 0; -#endif -#ifndef WITH_LEAN - soap->wsuid = NULL; - soap->c14nexclude = NULL; - soap->cookies = NULL; - soap->cookie_domain = NULL; - soap->cookie_path = NULL; - soap->cookie_max = 32; -#endif -#ifdef WMW_RPM_IO - soap->rpmreqid = NULL; -#endif -#ifdef PALM - palmNetLibOpen(); -#endif -#ifndef WITH_NOIDREF - soap_init_iht(soap); - soap_init_pht(soap); -#endif -#ifdef WITH_OPENSSL - if (!soap_ssl_init_done) - soap_ssl_init(); - soap->fsslauth = ssl_auth_init; - soap->fsslverify = ssl_verify_callback; - soap->bio = NULL; - soap->ssl = NULL; - soap->ctx = NULL; - soap->ssl_flags = SOAP_SSL_DEFAULT; - soap->keyfile = NULL; - soap->password = NULL; - soap->dhfile = NULL; - soap->cafile = NULL; - soap->capath = NULL; - soap->crlfile = NULL; - soap->randfile = NULL; - soap->session = NULL; -#endif -#ifdef WITH_C_LOCALE - soap->c_locale = newlocale(LC_ALL_MASK, "C", NULL); -#else - soap->c_locale = NULL; -#endif - soap->buflen = 0; - soap->bufidx = 0; -#ifndef WITH_LEANER - soap->dime.chunksize = 0; - soap->dime.buflen = 0; -#endif - soap->null = 0; - soap->position = 0; - soap->encoding = 0; - soap->mustUnderstand = 0; - soap->ns = 0; - soap->part = SOAP_END; - soap->alloced = 0; - soap->count = 0; - soap->length = 0; - soap->cdata = 0; - soap->peeked = 0; - soap->ahead = 0; - soap->idnum = 0; - soap->level = 0; - soap->endpoint[0] = '\0'; - soap->error = SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_init1(struct soap *soap, soap_mode mode) -{ soap_init2(soap, mode, mode); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_init2(struct soap *soap, soap_mode imode, soap_mode omode) -{ soap_init(soap); - soap_imode(soap, imode); - soap_omode(soap, omode); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_begin(struct soap *soap) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reinitializing context\n")); - if (!soap->keep_alive) - { soap->buflen = 0; - soap->bufidx = 0; - } - soap->keep_alive = (((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) != 0); - soap->null = 0; - soap->position = 0; - soap->encoding = 0; - soap->mustUnderstand = 0; - soap->mode = 0; - soap->ns = 0; - soap->part = SOAP_END; - soap->alloced = 0; - soap->count = 0; - soap->length = 0; - soap->cdata = 0; - soap->error = SOAP_OK; - soap->peeked = 0; - soap->ahead = 0; - soap->idnum = 0; - soap->level = 0; - soap->endpoint[0] = '\0'; -#ifndef WITH_LEANER - soap->dime.chunksize = 0; - soap->dime.buflen = 0; -#endif - soap_free_temp(soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_end(struct soap *soap) -{ if (soap_check_state(soap)) - return; - soap_free_temp(soap); - soap_dealloc(soap, NULL); - while (soap->clist) - { register struct soap_clist *cp = soap->clist->next; - SOAP_FREE(soap, soap->clist); - soap->clist = cp; - } - soap_closesock(soap); -#ifdef SOAP_DEBUG - soap_close_logfiles(soap); -#endif -#ifdef PALM - palmNetLibClose(); -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_namespaces(struct soap *soap, const struct Namespace *p) -{ register struct Namespace *ns = soap->local_namespaces; - register struct soap_nlist *np, *nq, *nr; - register unsigned int level = soap->level; - soap->namespaces = p; - soap->local_namespaces = NULL; - soap_set_local_namespaces(soap); - /* reverse the namespace list */ - np = soap->nlist; - soap->nlist = NULL; - if (np) - { nq = np->next; - np->next = NULL; - while (nq) - { nr = nq->next; - nq->next = np; - np = nq; - nq = nr; - } - } - /* then push on new stack */ - while (np) - { register const char *s; - soap->level = np->level; /* preserve element nesting level */ - s = np->ns; - if (!s && np->index >= 0 && ns) - { s = ns[np->index].out; - if (!s) - s = ns[np->index].ns; - } - if (s && soap_push_namespace(soap, np->id, s) == NULL) - return soap->error; - nq = np; - np = np->next; - SOAP_FREE(soap, nq); - } - if (ns) - { register int i; - for (i = 0; ns[i].id; i++) - { if (ns[i].out) - { SOAP_FREE(soap, ns[i].out); - ns[i].out = NULL; - } - } - SOAP_FREE(soap, ns); - } - soap->level = level; /* restore level */ - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_local_namespaces(struct soap *soap) -{ if (soap->namespaces && !soap->local_namespaces) - { register const struct Namespace *ns1; - register struct Namespace *ns2; - register size_t n = 1; - for (ns1 = soap->namespaces; ns1->id; ns1++) - n++; - n *= sizeof(struct Namespace); - ns2 = (struct Namespace*)SOAP_MALLOC(soap, n); - if (ns2) - { memcpy(ns2, soap->namespaces, n); - if (ns2[0].ns) - { if (!strcmp(ns2[0].ns, soap_env1)) - soap->version = 1; - else - soap->version = 2; - } - soap->local_namespaces = ns2; - } - } -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -#ifndef PALM_1 -SOAP_FMAC1 -const char * -SOAP_FMAC2 -soap_tagsearch(const char *big, const char *little) -{ if (little) - { register size_t n = strlen(little); - register const char *s = big; - while (s) - { register const char *t = s; - register size_t i; - for (i = 0; i < n; i++, t++) - { if (*t != little[i]) - break; - } - if (*t == '\0' || *t == ' ') - { if (i == n || (i && little[i-1] == ':')) - return s; - } - s = strchr(t, ' '); - if (s) - s++; - } - } - return NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -#ifndef PALM_1 -SOAP_FMAC1 -struct soap_nlist * -SOAP_FMAC2 -soap_lookup_ns(struct soap *soap, const char *tag, size_t n) -{ register struct soap_nlist *np; - for (np = soap->nlist; np; np = np->next) - { if (!strncmp(np->id, tag, n) && !np->id[n]) - return np; - } - return NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -static struct soap_nlist * -soap_push_ns(struct soap *soap, const char *id, const char *ns, short utilized) -{ register struct soap_nlist *np; - size_t n, k; - if (soap_tagsearch(soap->c14nexclude, id)) - return NULL; - if (!utilized) - { for (np = soap->nlist; np; np = np->next) - { if (!strcmp(np->id, id) && (!np->ns || !strcmp(np->ns, ns))) - break; - } - if (np) - { if ((np->level < soap->level || !np->ns) && np->index == 1) - utilized = 1; - else - return NULL; - } - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Adding namespace binding (level=%u) '%s' '%s' utilized=%d\n", soap->level, id, ns?ns:"(null)", utilized)); - n = strlen(id); - if (ns) - k = strlen(ns); - else - k = 0; - np = (struct soap_nlist*)SOAP_MALLOC(soap, sizeof(struct soap_nlist) + n + k + 1); - if (!np) - { soap->error = SOAP_EOM; - return NULL; - } - np->next = soap->nlist; - soap->nlist = np; - strcpy(np->id, id); - if (ns) - np->ns = strcpy(np->id + n + 1, ns); - else - np->ns = NULL; - np->level = soap->level; - np->index = utilized; - return np; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -static void -soap_utilize_ns(struct soap *soap, const char *tag, size_t n) -{ register struct soap_nlist *np = soap_lookup_ns(soap, tag, n); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Utilizing namespace of '%s'\n", tag)); - if (np) - { if (np->index == 0) - soap_push_ns(soap, np->id, np->ns, 1); - } - else if (strncmp(tag, "xml", 3)) - { strncpy(soap->tmpbuf, tag, n); - soap->tmpbuf[n] = '\0'; - soap_push_ns(soap, soap->tmpbuf, NULL, 1); - } -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element(struct soap *soap, const char *tag, int id, const char *type) -{ -#ifndef WITH_LEAN - register const char *s; -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element begin tag='%s' id='%d' type='%s'\n", tag, id, type?type:SOAP_STR_EOS)); -#ifdef WITH_DOM -#ifndef WITH_LEAN - if (soap->wsuid && soap_tagsearch(soap->wsuid, tag)) - { int i; - for (s = tag, i = 0; *s && i < sizeof(soap->tag); s++, i++) - soap->tag[i] = *s == ':' ? '-' : *s; - soap->tag[sizeof(soap->tag) - 1] = '\0'; - if (soap_set_attr(soap, "wsu:Id", soap->tag, 1)) - return soap->error; - } -#endif - if (soap->part == SOAP_BEGIN_SECURITY && (soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_DOM_ASIS)) - { register struct soap_nlist *np; - /* wsu:Id found: clear xmlns renderings, so re-emit them for exc-c14n */ - for (np = soap->nlist; np; np = np->next) - { if (np->index == 2) - np->index = 0; - } - } - if (soap->mode & SOAP_XML_DOM) - { register struct soap_dom_element *elt = (struct soap_dom_element*)soap_malloc(soap, sizeof(struct soap_dom_element)); - if (!elt) - return soap->error; - elt->soap = soap; - elt->next = NULL; - elt->prnt = soap->dom; - elt->name = soap_strdup(soap, tag); - elt->elts = NULL; - elt->atts = NULL; - elt->nstr = NULL; - elt->data = NULL; - elt->wide = NULL; - elt->node = NULL; - elt->type = 0; - elt->head = NULL; - elt->tail = NULL; - if (soap->dom) - { struct soap_dom_element *p = soap->dom->elts; - if (p) - { while (p->next) - p = p->next; - p->next = elt; - } - else - soap->dom->elts = elt; - } - soap->dom = elt; - } - else - { -#endif - soap->level++; -#ifndef WITH_LEAN - if (!soap->ns) - { if (!(soap->mode & SOAP_XML_CANONICAL) - && soap_send(soap, soap->prolog ? soap->prolog : "\n")) - return soap->error; - } - else if (soap->mode & SOAP_XML_INDENT) - { if (soap->ns == 1 && soap_send_raw(soap, soap_indent, soap->level < sizeof(soap_indent) ? soap->level : sizeof(soap_indent) - 1)) - return soap->error; - soap->body = 1; - } - if ((soap->mode & SOAP_XML_DEFAULTNS) && (s = strchr(tag, ':'))) - { struct Namespace *ns = soap->local_namespaces; - size_t n = s - tag; - if (soap_send_raw(soap, "<", 1) - || soap_send(soap, s + 1)) - return soap->error; - if (soap->nlist && !strncmp(soap->nlist->id, tag, n) && !soap->nlist->id[n]) - ns = NULL; - for (; ns && ns->id; ns++) - { if (*ns->id && (ns->out || ns->ns) && !strncmp(ns->id, tag, n) && !ns->id[n]) - { soap_push_ns(soap, ns->id, ns->out ? ns->out : ns->ns, 0); - if (soap_attribute(soap, "xmlns", ns->out ? ns->out : ns->ns)) - return soap->error; - break; - } - } - } - else -#endif - if (soap_send_raw(soap, "<", 1) - || soap_send(soap, tag)) - return soap->error; -#ifdef WITH_DOM - } -#endif - if (!soap->ns) - { struct Namespace *ns; - int k = -1; -#ifndef WITH_LEAN - if ((soap->mode & SOAP_XML_DEFAULTNS)) - k = 4; /* only produce the first four required entries */ -#endif - for (ns = soap->local_namespaces; ns && ns->id && k; ns++, k--) - { if (*ns->id && (ns->out || ns->ns)) - { sprintf(soap->tmpbuf, "xmlns:%s", ns->id); - if (soap_attribute(soap, soap->tmpbuf, ns->out ? ns->out : ns->ns)) - return soap->error; - } - } - } - soap->ns = 1; /* namespace table control: ns = 0 or 2 to start, then 1 to stop dumping the table */ -#ifndef WITH_LEAN - if (soap->mode & SOAP_XML_CANONICAL) - { const char *t = strchr(tag, ':'); - if (t) - soap_utilize_ns(soap, tag, t - tag); - } -#endif - if (id > 0) - { sprintf(soap->tmpbuf, "_%d", id); - if (soap_attribute(soap, "id", soap->tmpbuf)) - return soap->error; - } - if (type && *type && (!(soap->mode & SOAP_XML_SEC) || soap->part == SOAP_IN_BODY)) - { if (soap_attribute(soap, "xsi:type", type)) - return soap->error; -#ifndef WITH_LEAN - if (soap->mode & SOAP_XML_CANONICAL) - { const char *t = strchr(type, ':'); - if (t) - soap_utilize_ns(soap, type, t - type); - } -#endif - } - if (soap->null && soap->position > 0) - { register int i; - sprintf(soap->tmpbuf, "[%d", soap->positions[0]); - for (i = 1; i < soap->position; i++) - sprintf(soap->tmpbuf + strlen(soap->tmpbuf), ",%d", soap->positions[i]); - strcat(soap->tmpbuf, "]"); - if (soap_attribute(soap, "SOAP-ENC:position", soap->tmpbuf)) - return soap->error; - } - if (soap->mustUnderstand) - { if (soap->actor && *soap->actor) - { if (soap_attribute(soap, soap->version == 2 ? "SOAP-ENV:role" : "SOAP-ENV:actor", soap->actor)) - return soap->error; - } - if (soap_attribute(soap, "SOAP-ENV:mustUnderstand", soap->version == 2 ? "true" : "1")) - return soap->error; - soap->mustUnderstand = 0; - } - if (soap->encoding) - { if (soap->encodingStyle && soap->local_namespaces) - { if (!*soap->encodingStyle) - { if (soap->local_namespaces[1].out) - soap->encodingStyle = soap->local_namespaces[1].out; - else - soap->encodingStyle = soap->local_namespaces[1].ns; - } - if (soap->encodingStyle && soap_attribute(soap, "SOAP-ENV:encodingStyle", soap->encodingStyle)) - return soap->error; - } - soap->encoding = 0; - } - soap->null = 0; - soap->position = 0; - if (soap->part == SOAP_BEGIN_SECURITY && (soap->mode & SOAP_XML_CANONICAL)) - soap->part = SOAP_IN_SECURITY; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_begin_out(struct soap *soap, const char *tag, int id, const char *type) -{ if (*tag == '-') - return SOAP_OK; - if (soap_element(soap, tag, id, type)) - return soap->error; - return soap_element_start_end_out(soap, NULL); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -#ifndef HAVE_STRRCHR -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_strrchr(const char *s, int t) -{ register char *r = NULL; - while (*s) - if (*s++ == t) - r = (char*)s - 1; - return r; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -#ifndef HAVE_STRTOL -SOAP_FMAC1 -long -SOAP_FMAC2 -soap_strtol(const char *s, char **t, int b) -{ register long n = 0; - register int c; - while (*s > 0 && *s <= 32) - s++; - if (b == 10) - { short neg = 0; - if (*s == '-') - { s++; - neg = 1; - } - else if (*s == '+') - s++; - while ((c = *s) && c >= '0' && c <= '9') - { if (n >= 214748364 && (n > 214748364 || c >= '8')) - break; - n *= 10; - n += c - '0'; - s++; - } - if (neg) - n = -n; - } - else /* assume b == 16 and value is always positive */ - { while ((c = *s)) - { if (c >= '0' && c <= '9') - c -= '0'; - else if (c >= 'A' && c <= 'F') - c -= 'A' - 10; - else if (c >= 'a' && c <= 'f') - c -= 'a' - 10; - if (n > 0x07FFFFFF) - break; - n <<= 4; - n += c; - s++; - } - } - if (t) - *t = (char*)s; - return n; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -#ifndef HAVE_STRTOUL -SOAP_FMAC1 -unsigned long -SOAP_FMAC2 -soap_strtoul(const char *s, char **t, int b) -{ unsigned long n = 0; - register int c; - while (*s > 0 && *s <= 32) - s++; - if (b == 10) - { if (*s == '+') - s++; - while ((c = *s) && c >= '0' && c <= '9') - { if (n >= 429496729 && (n > 429496729 || c >= '6')) - break; - n *= 10; - n += c - '0'; - s++; - } - } - else /* b == 16 */ - { while ((c = *s)) - { if (c >= '0' && c <= '9') - c -= '0'; - else if (c >= 'A' && c <= 'F') - c -= 'A' - 10; - else if (c >= 'a' && c <= 'f') - c -= 'a' - 10; - if (n > 0x0FFFFFFF) - break; - n <<= 4; - n += c; - s++; - } - } - if (t) - *t = (char*)s; - return n; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_array_begin_out(struct soap *soap, const char *tag, int id, const char *type, const char *offset) -{ if (!type || !*type) - return soap_element_begin_out(soap, tag, id, NULL); - if (soap_element(soap, tag, id, "SOAP-ENC:Array")) - return soap->error; - if (soap->version == 2) - { const char *s; - s = soap_strrchr(type, '['); - if ((size_t)(s - type) < sizeof(soap->tmpbuf)) - { strncpy(soap->tmpbuf, type, s - type); - soap->tmpbuf[s - type] = '\0'; - if (soap_attribute(soap, "SOAP-ENC:itemType", soap->tmpbuf)) - return soap->error; - if (s && (soap_attribute(soap, "SOAP-ENC:arraySize", s + 1))) - return soap->error; - } - } - else - { if (offset && soap_attribute(soap, "SOAP-ENC:offset", offset)) - return soap->error; - if (soap_attribute(soap, "SOAP-ENC:arrayType", type)) - return soap->error; - } -#ifndef WITH_LEAN - if ((soap->mode & SOAP_XML_CANONICAL)) - { const char *s = strchr(type, ':'); - if (s) - soap_utilize_ns(soap, type, s - type); - } -#endif - return soap_element_start_end_out(soap, NULL); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_start_end_out(struct soap *soap, const char *tag) -{ register struct soap_attribute *tp; -#ifndef WITH_LEAN - if (soap->mode & SOAP_XML_CANONICAL) - { struct soap_nlist *np; - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible && tp->name) - { const char *s = strchr(tp->name, ':'); - if (s) - soap_utilize_ns(soap, tp->name, s - tp->name); - } - } - for (np = soap->nlist; np; np = np->next) - { if (np->index == 1 && np->ns) - { sprintf(soap->tmpbuf, "xmlns:%s", np->id); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Enabling utilized binding (level=%u) %s='%s'\n", np->level, soap->tmpbuf, np->ns)); - soap_set_attr(soap, soap->tmpbuf, np->ns, 1); - np->index = 2; - } - } - } -#endif -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { register struct soap_dom_attribute **att; - att = &soap->dom->atts; - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible) - { *att = (struct soap_dom_attribute*)soap_malloc(soap, sizeof(struct soap_dom_attribute)); - if (!*att) - return soap->error; - (*att)->next = NULL; - (*att)->nstr = NULL; - (*att)->name = soap_strdup(soap, tp->name); - (*att)->data = soap_strdup(soap, tp->value); - (*att)->wide = NULL; - (*att)->soap = soap; - att = &(*att)->next; - tp->visible = 0; - } - } - return SOAP_OK; - } -#endif - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible) - { -#ifndef WITH_LEAN - const char *s; - if ((soap->mode & SOAP_XML_DEFAULTNS) && (s = strchr(tp->name, ':'))) - { size_t n = s - tp->name; - if (soap->nlist && !strncmp(soap->nlist->id, tp->name, n) && !soap->nlist->id[n]) - s++; - else - s = tp->name; - if (soap_send(soap, " ") || soap_send(soap, s)) - return soap->error; - } - else -#endif - if (soap_send(soap, " ") || soap_send(soap, tp->name)) - return soap->error; - if (tp->visible == 2 && tp->value) - if (soap_send_raw(soap, "=\"", 2) - || soap_string_out(soap, tp->value, tp->flag) - || soap_send_raw(soap, "\"", 1)) - return soap->error; - tp->visible = 0; - } - } - if (tag) - { -#ifndef WITH_LEAN - if (soap->mode & SOAP_XML_CANONICAL) - { if (soap_send_raw(soap, ">", 1) - || soap_element_end_out(soap, tag)) - return soap->error; - return SOAP_OK; - } -#endif - soap->level--; /* decrement level just before /> */ - if (soap_send_raw(soap, "/>", 2)) - return soap->error; - return SOAP_OK; - } - return soap_send_raw(soap, ">", 1); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_end_out(struct soap *soap, const char *tag) -{ -#ifndef WITH_LEAN - const char *s; -#endif - if (*tag == '-') - return SOAP_OK; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element ending tag='%s'\n", tag)); -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { if (soap->dom->prnt) - soap->dom = soap->dom->prnt; - return SOAP_OK; - } -#endif -#ifndef WITH_LEAN - if (soap->mode & SOAP_XML_CANONICAL) - soap_pop_namespace(soap); - if (soap->mode & SOAP_XML_INDENT) - { if (!soap->body) - { if (soap_send_raw(soap, soap_indent, soap->level < sizeof(soap_indent) ? soap->level : sizeof(soap_indent) - 1)) - return soap->error; - } - soap->body = 0; - } - if ((soap->mode & SOAP_XML_DEFAULTNS) && (s = strchr(tag, ':'))) - { soap_pop_namespace(soap); - tag = s + 1; - } -#endif - if (soap_send_raw(soap, "error; - soap->level--; /* decrement level just before > */ - return soap_send_raw(soap, ">", 1); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_ref(struct soap *soap, const char *tag, int id, int href) -{ register int n = 0; - const char *s = "href"; - if (soap->version == 2) - { s = "SOAP-ENC:ref"; - n = 1; - } - sprintf(soap->href, "#_%d", href); - return soap_element_href(soap, tag, id, s, soap->href + n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_href(struct soap *soap, const char *tag, int id, const char *ref, const char *val) -{ DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element '%s' reference %s='%s'\n", tag, ref, val)); - if (soap_element(soap, tag, id, NULL) - || soap_attribute(soap, ref, val) - || soap_element_start_end_out(soap, tag)) - return soap->error; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_null(struct soap *soap, const char *tag, int id, const char *type) -{ struct soap_attribute *tp; - for (tp = soap->attributes; tp; tp = tp->next) - if (tp->visible) - break; - if (tp || (soap->version == 2 && soap->position > 0) || id > 0 || (soap->mode & SOAP_XML_NIL)) - { if (soap_element(soap, tag, id, type)) - return soap->error; - if (!tp && soap_attribute(soap, "xsi:nil", "true")) - return soap->error; - return soap_element_start_end_out(soap, tag); - } - soap->null = 1; - soap->position = 0; - soap->mustUnderstand = 0; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_id(struct soap *soap, const char *tag, int id, const void *p, const struct soap_array *a, int n, const char *type, int t) -{ if (!p) - { soap_element_null(soap, tag, id, type); - return -1; - } -#ifndef WITH_NOIDREF - if (soap->mode & SOAP_XML_TREE) - return 0; - if (id < 0) - { struct soap_plist *pp; - if (a) - id = soap_array_pointer_lookup(soap, p, a, n, t, &pp); - else - id = soap_pointer_lookup(soap, p, t, &pp); - if (id) - { if (soap_is_embedded(soap, pp)) - { soap_element_ref(soap, tag, 0, id); - return -1; - } - if (soap_is_single(soap, pp)) - return 0; - soap_set_embedded(soap, pp); - } - } - return id; -#else - return 0; -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_result(struct soap *soap, const char *tag) -{ if (soap->version == 2 && soap->encodingStyle) - { if (soap_element(soap, "SOAP-RPC:result", 0, NULL) - || soap_attribute(soap, "xmlns:SOAP-RPC", soap_rpc) - || soap_element_start_end_out(soap, NULL) - || soap_string_out(soap, tag, 0) - || soap_element_end_out(soap, "SOAP-RPC:result")) - return soap->error; - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_check_result(struct soap *soap, const char *tag) -{ if (soap->version == 2 && soap->encodingStyle) - { soap_instring(soap, ":result", NULL, NULL, 0, 2, -1, -1); - /* just ignore content for compliance reasons, but should compare tag to element's QName value? */ - } -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_attribute(struct soap *soap, const char *name, const char *value) -{ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Attribute '%s'='%s'\n", name, value)); -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && !(soap->mode & SOAP_XML_CANONICAL) && soap->dom) - { register struct soap_dom_attribute *a = (struct soap_dom_attribute*)soap_malloc(soap, sizeof(struct soap_dom_attribute)); - if (!a) - return soap->error; - a->next = soap->dom->atts; - a->nstr = NULL; - a->name = soap_strdup(soap, name); - a->data = soap_strdup(soap, value); - a->wide = NULL; - a->soap = soap; - soap->dom->atts = a; - return SOAP_OK; - } -#endif -#ifndef WITH_LEAN - if (soap->mode & SOAP_XML_CANONICAL) - { /* TODO: consider using this code to handle default namespace bindings - if (!strncmp(name, "xmlns", 5) && (name[5] == ':' || name[5] == '\0')) - { if (name[5] == ':') - soap_push_ns(soap, name + 6, value, 0); - else - soap_push_ns(soap, "", value, 0); - } - */ - if (!strncmp(name, "xmlns:", 6)) - soap_push_ns(soap, name + 6, value, 0); - else if (soap_set_attr(soap, name, value, 1)) - return soap->error; - } - else -#endif - { if (soap_send(soap, " ") || soap_send(soap, name)) - return soap->error; - if (value) - if (soap_send_raw(soap, "=\"", 2) - || soap_string_out(soap, value, 1) - || soap_send_raw(soap, "\"", 1)) - return soap->error; - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_begin_in(struct soap *soap, const char *tag, int nillable, const char *type) -{ if (!soap_peek_element(soap)) - { if (soap->other) - return soap->error = SOAP_TAG_MISMATCH; - if (tag && *tag == '-') - return SOAP_OK; - if (!(soap->error = soap_match_tag(soap, soap->tag, tag))) - { soap->peeked = 0; - if (type && *soap->type && soap_match_tag(soap, soap->type, type)) - return soap->error = SOAP_TYPE; - if (!nillable && soap->null && (soap->mode & SOAP_XML_STRICT)) - return soap->error = SOAP_NULL; - if (soap->body) - soap->level++; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Begin element found (level=%u) '%s'='%s'\n", soap->level, soap->tag, tag?tag:SOAP_STR_EOS )); - } - } - else if (soap->error == SOAP_NO_TAG && tag && *tag == '-') - soap->error = SOAP_OK; - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_element_end_in(struct soap *soap, const char *tag) -{ register soap_wchar c; - register char *s; - register int n = 0; - if (tag && *tag == '-') - return SOAP_OK; - if (soap->error == SOAP_NO_TAG) - soap->error = SOAP_OK; -#ifdef WITH_DOM - /* this whitespace or mixed content is not insignificant for DOM */ - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { if (!soap->peeked && !soap_string_in(soap, 3, -1, -1)) - return soap->error; - if (soap->dom->prnt) - soap->dom = soap->dom->prnt; - } -#endif - if (soap->peeked) - { if (*soap->tag) - n++; - soap->peeked = 0; - } - do - { while (((c = soap_get(soap)) != SOAP_TT)) - { if ((int)c == EOF) - return soap->error = SOAP_EOF; - if (c == SOAP_LT) - n++; - else if (c == '/') - { c = soap_get(soap); - if (c == SOAP_GT) - n--; - else - soap_unget(soap, c); - } - } - } while (n--); - s = soap->tag; - n = sizeof(soap->tag); - while (soap_notblank(c = soap_get(soap))) - { if (--n > 0) - *s++ = (char)c; - } - *s = '\0'; - if ((int)c == EOF) - return soap->error = SOAP_EOF; - while (soap_blank(c)) - c = soap_get(soap); - if (c != SOAP_GT) - return soap->error = SOAP_SYNTAX_ERROR; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End element found (level=%u) '%s'='%s'\n", soap->level, soap->tag, tag?tag:SOAP_STR_EOS)); -#ifndef WITH_LEAN - if (tag && (soap->mode & SOAP_XML_STRICT)) - { soap_pop_namespace(soap); - if (soap_match_tag(soap, soap->tag, tag)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End element tag name does not match\n")); - return soap->error = SOAP_SYNTAX_ERROR; - } - } -#endif - soap->level--; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char * -SOAP_FMAC2 -soap_attr_value(struct soap *soap, const char *name, int flag) -{ register struct soap_attribute *tp; - if (*name == '-') - return SOAP_STR_EOS; - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible && !soap_match_tag(soap, tp->name, name)) - break; - } - if (tp) - { if (flag == 2 && (soap->mode & SOAP_XML_STRICT)) - soap->error = SOAP_PROHIBITED; - else - return tp->value; - } - else if (flag == 1 && (soap->mode & SOAP_XML_STRICT)) - soap->error = SOAP_REQUIRED; - else - soap->error = SOAP_OK; - return NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_attr(struct soap *soap, const char *name, const char *value, int flag) -{ register struct soap_attribute *tp; - if (*name == '-') - return SOAP_OK; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set attribute %s='%s'\n", name, value?value:SOAP_STR_EOS)); - for (tp = soap->attributes; tp; tp = tp->next) - { if (!strcmp(tp->name, name)) - break; - } - if (!tp) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Allocate attribute %s\n", name)); - if (!(tp = (struct soap_attribute*)SOAP_MALLOC(soap, sizeof(struct soap_attribute) + strlen(name)))) - return soap->error = SOAP_EOM; - tp->ns = NULL; -#ifndef WITH_LEAN - if ((soap->mode & SOAP_XML_CANONICAL)) - { struct soap_attribute **tpp = &soap->attributes; - const char *s = strchr(name, ':'); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inserting attribute %s for c14n\n", name)) - if (!strncmp(name, "xmlns", 5)) - { for (; *tpp; tpp = &(*tpp)->next) - if (strncmp((*tpp)->name, "xmlns", 5) || strcmp((*tpp)->name + 5, name + 5) > 0) - break; - } - else if (!s) - { for (; *tpp; tpp = &(*tpp)->next) - if (strncmp((*tpp)->name, "xmlns", 5) && ((*tpp)->ns || strcmp((*tpp)->name, name) > 0)) - break; - } - else - { int k; - for (; *tpp; tpp = &(*tpp)->next) - { if (!strncmp((*tpp)->name, "xmlns:", 6) && !strncmp((*tpp)->name + 6, name, s - name) && !(*tpp)->name[6 + s - name]) - { if (!tp->ns) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Canonicalization: prefix %s=%p (%s)\n", name, (*tpp)->ns, (*tpp)->ns)); - tp->ns = (*tpp)->ns; - } - } - else if (strncmp((*tpp)->name, "xmlns", 5) && (*tpp)->ns && tp->ns && ((k = strcmp((*tpp)->ns, tp->ns)) > 0 || (!k && strcmp((*tpp)->name, name) > 0))) - break; - } - } - tp->next = *tpp; - *tpp = tp; - } - else -#endif - { tp->next = soap->attributes; - soap->attributes = tp; - } - strcpy(tp->name, name); - tp->value = NULL; - } - else if (tp->visible) - { return SOAP_OK; - } - else if (value && tp->value && tp->size <= strlen(value)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free attribute value of %s (free %p)\n", name, tp->value)); - SOAP_FREE(soap, tp->value); - tp->value = NULL; - tp->ns = NULL; - } - if (value) - { if (!tp->value) - { tp->size = strlen(value) + 1; - if (!(tp->value = (char*)SOAP_MALLOC(soap, tp->size))) - return soap->error = SOAP_EOM; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Allocate attribute value for %s (%p)\n", tp->name, tp->value)); - } - strcpy(tp->value, value); - if (!strncmp(tp->name, "xmlns:", 6)) - tp->ns = tp->value; - tp->visible = 2; - tp->flag = flag; -#ifndef WITH_LEAN - if (soap->part != SOAP_IN_SECURITY && !strcmp(name, "wsu:Id")) - { soap->part = SOAP_BEGIN_SECURITY; - strncpy(soap->id, value, sizeof(soap->id)); - soap->id[sizeof(soap->id)-1] = '\0'; - } -#endif - } - else - tp->visible = 1; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_clr_attr(struct soap *soap) -{ register struct soap_attribute *tp; -#ifndef WITH_LEAN - if ((soap->mode & SOAP_XML_CANONICAL)) - { while (soap->attributes) - { tp = soap->attributes->next; - if (soap->attributes->value) - SOAP_FREE(soap, soap->attributes->value); - SOAP_FREE(soap, soap->attributes); - soap->attributes = tp; - } - } - else -#endif - { for (tp = soap->attributes; tp; tp = tp->next) - tp->visible = 0; - } -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -static int -soap_getattrval(struct soap *soap, char *s, size_t n, soap_wchar d) -{ register size_t i; - for (i = 0; i < n; i++) - { register soap_wchar c = soap_get(soap); - switch (c) - { - case SOAP_TT: - *s++ = '<'; - soap_unget(soap, '/'); - break; - case SOAP_LT: - *s++ = '<'; - break; - case SOAP_GT: - if (d == ' ') - { soap_unget(soap, c); - *s = '\0'; - return SOAP_OK; - } - *s++ = '>'; - break; - case SOAP_QT: - if (c == d) - { *s = '\0'; - return SOAP_OK; - } - *s++ = '"'; - break; - case SOAP_AP: - if (c == d) - { *s = '\0'; - return SOAP_OK; - } - *s++ = '\''; - break; - case '\t': - case '\n': - case '\r': - case ' ': - case '/': - if (d == ' ') - { soap_unget(soap, c); - *s = '\0'; - return SOAP_OK; - } - default: - if ((int)c == EOF) - return soap->error = SOAP_EOF; - *s++ = (char)c; - } - } - return soap->error = SOAP_EOM; -} -#endif - -/******************************************************************************/ -#ifdef WITH_FAST -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_store_lab(struct soap *soap, const char *s, size_t n) -{ soap->labidx = 0; - return soap_append_lab(soap, s, n); -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_FAST -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_append_lab(struct soap *soap, const char *s, size_t n) -{ if (soap->labidx + n >= soap->lablen) - { register char *t = soap->labbuf; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Enlarging look-aside buffer to append data, old size=%lu", (unsigned long)soap->lablen)); - if (soap->lablen == 0) - soap->lablen = SOAP_LABLEN; - while (soap->labidx + n >= soap->lablen) - soap->lablen <<= 1; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, ", new size=%lu\n", (unsigned long)soap->lablen)); - soap->labbuf = (char*)SOAP_MALLOC(soap, soap->lablen); - if (!soap->labbuf) - { if (t) - SOAP_FREE(soap, t); - return soap->error = SOAP_EOM; - } - if (t) - { memcpy(soap->labbuf, t, soap->labidx); - SOAP_FREE(soap, t); - } - } - if (s) - { memcpy(soap->labbuf + soap->labidx, s, n); - soap->labidx += n; - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_peek_element(struct soap *soap) -{ -#ifdef WITH_DOM - register struct soap_dom_attribute **att = NULL; - register char *lead = NULL; -#endif - register struct soap_attribute *tp, *tq = NULL; - register const char *t; - register char *s; - register soap_wchar c; - register int i; - if (soap->peeked) - { if (!*soap->tag) - return soap->error = SOAP_NO_TAG; - return SOAP_OK; - } - soap->peeked = 1; - soap->id[0] = '\0'; - soap->href[0] = '\0'; - soap->type[0] = '\0'; - soap->arrayType[0] = '\0'; - soap->arraySize[0] = '\0'; - soap->arrayOffset[0] = '\0'; - soap->other = 0; - soap->root = -1; - soap->position = 0; - soap->null = 0; - soap->mustUnderstand = 0; - /* skip BOM */ - if ((c = soap_getchar(soap)) != 0xEF || (c = soap_get1(soap)) != 0xBB || (c = soap_get1(soap)) != 0xBF) - soap_unget(soap, c); - c = soap_get(soap); -#ifdef WITH_DOM - /* whitespace leading to start tag is not insignificant for DOM */ - if (soap_blank(c)) - { soap->labidx = 0; - do - { if (soap_append_lab(soap, NULL, 0)) - return soap->error; - s = soap->labbuf + soap->labidx; - i = soap->lablen - soap->labidx; - soap->labidx = soap->lablen; - while (soap_blank(c) && i--) - { *s++ = c; - c = soap_get(soap); - } - } - while (soap_blank(c)); - *s = '\0'; - if (*soap->labbuf) - lead = soap->labbuf; - } -#else - /* skip space */ - while (soap_blank(c)) - c = soap_get(soap); -#endif - if (c != SOAP_LT) - { *soap->tag = '\0'; - if ((int)c == EOF) - return soap->error = SOAP_EOF; - soap_unget(soap, c); -#ifdef WITH_DOM - /* whitespace leading to end tag is not insignificant for DOM */ - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - soap->dom->tail = soap_strdup(soap, lead); -#endif - return soap->error = SOAP_NO_TAG; - } - s = soap->tag; - do c = soap_get1(soap); - while (soap_blank(c)); - i = sizeof(soap->tag); - while (c != '>' && c != '/' && soap_notblank(c) && (int)c != EOF) - { if (--i > 0) - *s++ = (char)c; - c = soap_get1(soap); - } - while (soap_blank(c)) - c = soap_get1(soap); - *s = '\0'; -#ifdef WITH_DOM - if (soap->mode & SOAP_XML_DOM) - { register struct soap_dom_element *elt; - elt = (struct soap_dom_element*)soap_malloc(soap, sizeof(struct soap_dom_element)); - if (!elt) - return soap->error; - elt->next = NULL; - elt->nstr = NULL; - elt->name = soap_strdup(soap, soap->tag); - elt->prnt = soap->dom; - elt->elts = NULL; - elt->atts = NULL; - elt->data = NULL; - elt->wide = NULL; - elt->type = 0; - elt->node = NULL; - elt->head = soap_strdup(soap, lead); - elt->tail = NULL; - elt->soap = soap; - if (soap->dom) - { struct soap_dom_element *p = soap->dom->elts; - if (p) - { while (p->next) - p = p->next; - p->next = elt; - } - else - soap->dom->elts = elt; - } - soap->dom = elt; - att = &elt->atts; - } -#endif - soap_pop_namespace(soap); - for (tp = soap->attributes; tp; tp = tp->next) - tp->visible = 0; - while ((int)c != EOF && c != '>' && c != '/') - { s = soap->tmpbuf; - i = sizeof(soap->tmpbuf); - while (c != '=' && c != '>' && c != '/' && soap_notblank(c) && (int)c != EOF) - { if (--i > 0) - *s++ = (char)c; - c = soap_get1(soap); - } - *s = '\0'; - if (i == sizeof(soap->tmpbuf)) - return soap->error = SOAP_SYNTAX_ERROR; -#ifdef WITH_DOM - /* add attribute name to dom */ - if (att) - { *att = (struct soap_dom_attribute*)soap_malloc(soap, sizeof(struct soap_dom_attribute)); - if (!*att) - return soap->error; - (*att)->next = NULL; - (*att)->nstr = NULL; - (*att)->name = soap_strdup(soap, soap->tmpbuf); - (*att)->data = NULL; - (*att)->wide = NULL; - (*att)->soap = soap; - } -#endif - if (!strncmp(soap->tmpbuf, "xmlns", 5)) - { if (soap->tmpbuf[5] == ':') - t = soap->tmpbuf + 6; - else if (soap->tmpbuf[5]) - t = NULL; - else - t = SOAP_STR_EOS; - } - else - t = NULL; - tq = NULL; - for (tp = soap->attributes; tp; tq = tp, tp = tp->next) - { if (!SOAP_STRCMP(tp->name, soap->tmpbuf)) - break; - } - if (!tp) - { tp = (struct soap_attribute*)SOAP_MALLOC(soap, sizeof(struct soap_attribute) + strlen(soap->tmpbuf)); - if (!tp) - return soap->error = SOAP_EOM; - strcpy(tp->name, soap->tmpbuf); - tp->value = NULL; - tp->size = 0; - /* if attribute name is qualified, append it to the end of the list */ - if (tq && strchr(soap->tmpbuf, ':')) - { tq->next = tp; - tp->next = NULL; - } - else - { tp->next = soap->attributes; - soap->attributes = tp; - } - } - while (soap_blank(c)) - c = soap_get1(soap); - if (c == '=') - { do c = soap_getutf8(soap); - while (soap_blank(c)); - if (c != SOAP_QT && c != SOAP_AP) - { soap_unget(soap, c); - c = ' '; /* blank delimiter */ - } - if (soap_getattrval(soap, tp->value, tp->size, c)) - { -#ifdef WITH_FAST - if (soap->error != SOAP_EOM) - return soap->error; - soap->error = SOAP_OK; - if (soap_store_lab(soap, tp->value, tp->size)) - return soap->error; - if (tp->value) - SOAP_FREE(soap, tp->value); - for (;;) - { if (soap_getattrval(soap, soap->labbuf + soap->labidx, soap->lablen - soap->labidx, c)) - { if (soap->error != SOAP_EOM) - return soap->error; - soap->error = SOAP_OK; - soap->labidx = soap->lablen; - if (soap_append_lab(soap, NULL, 0)) - return soap->error; - } - else - break; - } - if (soap->labidx) - tp->size = soap->lablen; - else - { tp->size = strlen(soap->labbuf) + 1; - if (tp->size < SOAP_LABLEN) - tp->size = SOAP_LABLEN; - } - if (!(tp->value = (char*)SOAP_MALLOC(soap, tp->size))) - return soap->error = SOAP_EOM; - strcpy(tp->value, soap->labbuf); -#else - size_t n; - if (soap->error != SOAP_EOM) - return soap->error; - soap->error = SOAP_OK; - if (soap_new_block(soap) == NULL) - return soap->error; - for (;;) - { if (!(s = (char*)soap_push_block(soap, NULL, SOAP_BLKLEN))) - return soap->error; - if (soap_getattrval(soap, s, SOAP_BLKLEN, c)) - { if (soap->error != SOAP_EOM) - return soap->error; - soap->error = SOAP_OK; - } - else - break; - } - n = tp->size + soap->blist->size; - if (!(s = (char*)SOAP_MALLOC(soap, n))) - return soap->error = SOAP_EOM; - if (tp->value) - { memcpy(s, tp->value, tp->size); - SOAP_FREE(soap, tp->value); - } - soap_save_block(soap, NULL, s + tp->size, 0); - tp->value = s; - tp->size = n; -#endif - } - do c = soap_get1(soap); - while (soap_blank(c)); - tp->visible = 2; /* seen this attribute w/ value */ -#ifdef WITH_DOM - if (att) - (*att)->data = soap_strdup(soap, tp->value); -#endif - } - else - tp->visible = 1; /* seen this attribute w/o value */ -#ifdef WITH_DOM - if (att) - att = &(*att)->next; -#endif - if (t && tp->value) - { if (soap_push_namespace(soap, t, tp->value) == NULL) - return soap->error; - } - } -#ifdef WITH_DOM - if (att) - { soap->dom->nstr = soap_current_namespace(soap, soap->tag); - for (att = &soap->dom->atts; *att; att = &(*att)->next) - (*att)->nstr = soap_current_namespace(soap, (*att)->name); - } -#endif - if ((int)c == EOF) - return soap->error = SOAP_EOF; - if (!(soap->body = (c != '/'))) - do c = soap_get1(soap); - while (soap_blank(c)); -#ifdef WITH_DOM - if (soap->mode & SOAP_XML_DOM) - { if (!soap->body && soap->dom->prnt) - soap->dom = soap->dom->prnt; - } -#endif - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible && tp->value) - { -#ifndef WITH_NOIDREF - if (!strcmp(tp->name, "id")) - { if ((soap->version > 0 && !(soap->mode & SOAP_XML_TREE)) - || (soap->mode & SOAP_XML_GRAPH)) - { *soap->id = '#'; - strncpy(soap->id + 1, tp->value, sizeof(soap->id) - 2); - soap->id[sizeof(soap->id)-1] = '\0'; - } - } - else if (!strcmp(tp->name, "href")) - { if (soap->version == 1 - || (soap->mode & SOAP_XML_GRAPH) - || (soap->mode & SOAP_ENC_MTOM) - || (soap->mode & SOAP_ENC_DIME)) - { strncpy(soap->href, tp->value, sizeof(soap->href) - 1); - soap->href[sizeof(soap->href)-1] = '\0'; - } - } - else -#endif - if (!soap_match_tag(soap, tp->name, "xsi:type")) - { strncpy(soap->type, tp->value, sizeof(soap->type) - 1); - soap->type[sizeof(soap->type)-1] = '\0'; - } - else if ((!soap_match_tag(soap, tp->name, "xsi:null") - || !soap_match_tag(soap, tp->name, "xsi:nil")) - && (!strcmp(tp->value, "1") - || !strcmp(tp->value, "true"))) - { soap->null = 1; - } - else if (soap->version == 1) - { if (!soap_match_tag(soap, tp->name, "SOAP-ENC:arrayType")) - { s = soap_strrchr(tp->value, '['); - if (s && (size_t)(s - tp->value) < sizeof(soap->arrayType)) - { strncpy(soap->arrayType, tp->value, s - tp->value); - soap->arrayType[s - tp->value] = '\0'; - strncpy(soap->arraySize, s, sizeof(soap->arraySize) - 1); - } - else - strncpy(soap->arrayType, tp->value, sizeof(soap->arrayType) - 1); - soap->arraySize[sizeof(soap->arrayType)-1] = '\0'; - soap->arrayType[sizeof(soap->arrayType)-1] = '\0'; - } - else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:offset")) - strncpy(soap->arrayOffset, tp->value, sizeof(soap->arrayOffset)); - else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:position")) - soap->position = soap_getposition(tp->value, soap->positions); - else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:root")) - soap->root = ((!strcmp(tp->value, "1") || !strcmp(tp->value, "true"))); - else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:mustUnderstand") - && (!strcmp(tp->value, "1") || !strcmp(tp->value, "true"))) - soap->mustUnderstand = 1; - else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:actor")) - { if ((!soap->actor || strcmp(soap->actor, tp->value)) - && strcmp(tp->value, "http://schemas.xmlsoap.org/soap/actor/next")) - soap->other = 1; - } - } - else if (soap->version == 2) - { -#ifndef WITH_NOIDREF - if (!strcmp(tp->name, "ref") - || !soap_match_tag(soap, tp->name, "SOAP-ENC:ref")) - { *soap->href = '#'; - strncpy(soap->href + 1, tp->value, sizeof(soap->href) - 2); - soap->href[sizeof(soap->href)-1] = '\0'; - } - else -#endif - if (!soap_match_tag(soap, tp->name, "SOAP-ENC:itemType")) - strncpy(soap->arrayType, tp->value, sizeof(soap->arrayType) - 1); - else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:arraySize")) - strncpy(soap->arraySize, tp->value, sizeof(soap->arraySize) - 1); - else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:mustUnderstand") - && (!strcmp(tp->value, "1") || !strcmp(tp->value, "true"))) - soap->mustUnderstand = 1; - else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:role")) - { if ((!soap->actor || strcmp(soap->actor, tp->value)) - && strcmp(tp->value, "http://www.w3.org/2003/05/soap-envelope/role/next")) - soap->other = 1; - } - } - else - { if (!soap_match_tag(soap, tp->name, "wsdl:required") && !strcmp(tp->value, "true")) - soap->mustUnderstand = 1; - } - } - } - return soap->error = SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_retry(struct soap *soap) -{ soap->error = SOAP_OK; - soap_revert(soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_revert(struct soap *soap) -{ if (!soap->peeked) - { soap->peeked = 1; - if (soap->body) - soap->level--; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reverting last element (level=%u)\n", soap->level)); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_string_out(struct soap *soap, const char *s, int flag) -{ register const char *t; - register soap_wchar c; - register soap_wchar mask = (soap_wchar)0xFFFFFF80UL; -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { soap->dom->data = soap_strdup(soap, s); - return SOAP_OK; - } -#endif - if (flag == 2 || soap->mode & SOAP_C_UTFSTRING) - mask = 0; - t = s; - while ((c = *t++)) - { switch (c) - { - case 0x09: - if (flag) - { if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, " ", 5)) - return soap->error; - s = t; - } - break; - case 0x0A: - if (flag || !(soap->mode & SOAP_XML_CANONICAL)) - { if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, " ", 5)) - return soap->error; - s = t; - } - break; - case 0x0D: - if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, " ", 5)) - return soap->error; - s = t; - break; - case '&': - if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, "&", 5)) - return soap->error; - s = t; - break; - case '<': - if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, "<", 4)) - return soap->error; - s = t; - break; - case '>': - if (!flag) - { if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, ">", 4)) - return soap->error; - s = t; - } - break; - case '"': - if (flag) - { if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, """, 6)) - return soap->error; - s = t; - } - break; - default: -#ifndef WITH_LEANER -#ifdef HAVE_MBTOWC - if (soap->mode & SOAP_C_MBSTRING) - { wchar_t wc; - register int m = mbtowc(&wc, t - 1, MB_CUR_MAX); - if (m > 0 && wc != c) - { if (soap_send_raw(soap, s, t - s - 1) || soap_pututf8(soap, wc)) - return soap->error; - s = t += m - 1; - continue; - } - } -#endif -#endif -#ifndef WITH_NOSTRINGTOUTF8 - if ((c & mask) || !(c & 0xFFFFFFE0UL)) - { if (soap_send_raw(soap, s, t - s - 1) || soap_pututf8(soap, (unsigned char)c)) - return soap->error; - s = t; - } -#endif - } - } - return soap_send_raw(soap, s, t - s - 1); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_string_in(struct soap *soap, int flag, long minlen, long maxlen) -{ register char *s; - char *t = NULL; - register size_t i; - register long l = 0; - register int n = 0, f = 0, m = 0; - register soap_wchar c; -#if !defined(WITH_LEANER) && defined(HAVE_WCTOMB) - char buf[MB_LEN_MAX > 8 ? MB_LEN_MAX : 8]; -#else - char buf[8]; -#endif - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Reading string content, flag=%d\n", flag)); - if (soap->peeked && *soap->tag) - { -#ifndef WITH_LEAN - struct soap_attribute *tp; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "String content includes tag '%s' and attributes\n", soap->tag)); - t = soap->tmpbuf; - *t = '<'; - t[sizeof(soap->tmpbuf)-1] = '\0'; - strncpy(t + 1, soap->tag, sizeof(soap->tmpbuf) - 2); - t += strlen(t); - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible) - { if (t >= soap->tmpbuf + sizeof(soap->tmpbuf) - 2) - break; - *t++ = ' '; - strcpy(t, tp->name); - t += strlen(t); - if (t >= soap->tmpbuf + sizeof(soap->tmpbuf) - 2) - break; /* too many or large attribute values */ - if (tp->value) - { *t++ = '='; - *t++ = '"'; - strcpy(t, tp->value); - t += strlen(t); - *t++ = '"'; - } - } - } - if (!soap->body) - *t++ = '/'; - *t++ = '>'; - *t = '\0'; - t = soap->tmpbuf; - m = (int)strlen(soap->tmpbuf); -#endif - if (soap->body) - n = 1; - f = 1; - soap->peeked = 0; - } -#ifdef WITH_CDATA - if (!flag) - { register int state = 0; -#ifdef WITH_FAST - soap->labidx = 0; /* use look-aside buffer */ -#else - if (soap_new_block(soap) == NULL) - return NULL; -#endif - for (;;) - { -#ifdef WITH_FAST - register size_t k; - if (soap_append_lab(soap, NULL, 0)) /* allocate more space in look-aside buffer if necessary */ - return NULL; - s = soap->labbuf + soap->labidx; /* space to populate */ - k = soap->lablen - soap->labidx; /* number of bytes available */ - soap->labidx = soap->lablen; /* claim this space */ -#else - register size_t k = SOAP_BLKLEN; - if (!(s = (char*)soap_push_block(soap, NULL, k))) - return NULL; -#endif - for (i = 0; i < k; i++) - { if (m > 0) - { *s++ = *t++; /* copy multibyte characters */ - m--; - continue; - } - c = soap_getchar(soap); - if ((int)c == EOF) - goto end; - if (c >= 0x80 && state != 1 && !(soap->mode & SOAP_ENC_LATIN)) - { soap_unget(soap, c); - c = soap_getutf8(soap); - if (soap->mode & SOAP_C_UTFSTRING) - { c &= 0x7FFFFFFF; - t = buf; - if (c < 0x0800) - *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); - else - { if (c < 0x010000) - *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); - else - { if (c < 0x200000) - *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); - else - { if (c < 0x04000000) - *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); - else - { *t++ = (char)(0xFC | ((c >> 30) & 0x01)); - *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); - } - *t++ = (char)(0x80 | (c & 0x3F)); - m = (int)(t - buf) - 1; - t = buf; - *s++ = *t++; - continue; - } - } - switch (state) - { case 1: - if (c == ']') - state = 4; - *s++ = c; - continue; - case 2: - if (c == '-') - state = 6; - *s++ = c; - continue; - case 3: - if (c == '?') - state = 8; - *s++ = c; - continue; - /* CDATA */ - case 4: - if (c == ']') - state = 5; - else - state = 1; - *s++ = c; - continue; - case 5: - if (c == '>') - state = 0; - else - state = 1; - *s++ = c; - continue; - /* comment */ - case 6: - if (c == '-') - state = 7; - else - state = 2; - *s++ = c; - continue; - case 7: - if (c == '>') - state = 0; - else - state = 2; - *s++ = c; - continue; - /* PI */ - case 8: - if (c == '>') - state = 0; - else - state = 3; - *s++ = c; - continue; - } - switch (c) - { - case SOAP_TT: - if (n == 0) - goto end; - n--; - *s++ = '<'; - t = (char*)"/"; - m = 1; - break; - case SOAP_LT: - if (f && n == 0) - goto end; - n++; - *s++ = '<'; - break; - case '/': - if (n > 0) - { c = soap_getchar(soap); - if (c == '>') - n--; - soap_unget(soap, c); - } - *s++ = '/'; - break; - case '<': - c = soap_getchar(soap); - if (c == '/') - { if (n == 0) - { c = SOAP_TT; - goto end; - } - n--; - } - else if (c == '!') - { c = soap_getchar(soap); - if (c == '[') - { do c = soap_getchar(soap); - while ((int)c != EOF && c != '['); - if ((int)c == EOF) - goto end; - t = (char*)"![CDATA["; - m = 8; - state = 1; - } - else if (c == '-') - { if ((c = soap_getchar(soap)) == '-') - state = 2; - t = (char*)"!-"; - m = 2; - soap_unget(soap, c); - } - else - { t = (char*)"!"; - m = 1; - soap_unget(soap, c); - } - *s++ = '<'; - break; - } - else if (c == '?') - state = 3; - else if (f && n == 0) - { soap_revget1(soap); - c = '<'; - goto end; - } - else - n++; - soap_unget(soap, c); - *s++ = '<'; - break; - case '>': - *s++ = '>'; - break; - case '"': - *s++ = '"'; - break; - default: -#ifndef WITH_LEANER -#ifdef HAVE_WCTOMB - if (soap->mode & SOAP_C_MBSTRING) - { m = wctomb(buf, c & 0x7FFFFFFF); - if (m >= 1 && m <= (int)MB_CUR_MAX) - { t = buf; - *s++ = *t++; - m--; - } - else - { *s++ = SOAP_UNKNOWN_CHAR; - m = 0; - } - } - else -#endif -#endif - *s++ = (char)(c & 0xFF); - } - l++; - if (maxlen >= 0 && l > maxlen) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); - soap->error = SOAP_LENGTH; - return NULL; - } - } - } - } -#endif -#ifdef WITH_FAST - soap->labidx = 0; /* use look-aside buffer */ -#else - if (soap_new_block(soap) == NULL) - return NULL; -#endif - for (;;) - { -#ifdef WITH_FAST - register size_t k; - if (soap_append_lab(soap, NULL, 0)) /* allocate more space in look-aside buffer if necessary */ - return NULL; - s = soap->labbuf + soap->labidx; /* space to populate */ - k = soap->lablen - soap->labidx; /* number of bytes available */ - soap->labidx = soap->lablen; /* claim this space */ -#else - register size_t k = SOAP_BLKLEN; - if (!(s = (char*)soap_push_block(soap, NULL, k))) - return NULL; -#endif - for (i = 0; i < k; i++) - { if (m > 0) - { *s++ = *t++; /* copy multibyte characters */ - m--; - continue; - } - if (soap->mode & SOAP_C_UTFSTRING) - { if (((c = soap_get(soap)) & 0x80000000) && c >= -0x7FFFFF80 && c < SOAP_AP) - { c &= 0x7FFFFFFF; - t = buf; - if (c < 0x0800) - *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); - else - { if (c < 0x010000) - *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); - else - { if (c < 0x200000) - *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); - else - { if (c < 0x04000000) - *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); - else - { *t++ = (char)(0xFC | ((c >> 30) & 0x01)); - *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); - } - *t++ = (char)(0x80 | (c & 0x3F)); - m = (int)(t - buf) - 1; - t = buf; - *s++ = *t++; - continue; - } - } - else - c = soap_getutf8(soap); - switch (c) - { - case SOAP_TT: - if (n == 0) - goto end; - n--; - *s++ = '<'; - t = (char*)"/"; - m = 1; - break; - case SOAP_LT: - if (f && n == 0) - goto end; - n++; - *s++ = '<'; - break; - case SOAP_GT: - *s++ = '>'; - break; - case SOAP_QT: - *s++ = '"'; - break; - case SOAP_AP: - *s++ = '\''; - break; - case '/': - if (n > 0) - { c = soap_get(soap); - if (c == SOAP_GT) - n--; - soap_unget(soap, c); - } - *s++ = '/'; - break; - case (soap_wchar)('<' | 0x80000000): - if (flag) - *s++ = '<'; - else - { *s++ = '&'; - t = (char*)"lt;"; - m = 3; - } - break; - case (soap_wchar)('>' | 0x80000000): - if (flag) - *s++ = '>'; - else - { *s++ = '&'; - t = (char*)"gt;"; - m = 3; - } - break; - case (soap_wchar)('&' | 0x80000000): - if (flag) - *s++ = '&'; - else - { *s++ = '&'; - t = (char*)"amp;"; - m = 4; - } - break; - case (soap_wchar)('"' | 0x80000000): - if (flag) - *s++ = '"'; - else - { *s++ = '&'; - t = (char*)"quot;"; - m = 5; - } - break; - case (soap_wchar)('\'' | 0x80000000): - if (flag) - *s++ = '\''; - else - { *s++ = '&'; - t = (char*)"apos;"; - m = 5; - } - break; - default: - if ((int)c == EOF) - goto end; -#ifndef WITH_LEANER -#ifdef HAVE_WCTOMB - if (soap->mode & SOAP_C_MBSTRING) - { m = wctomb(buf, c & 0x7FFFFFFF); - if (m >= 1 && m <= (int)MB_CUR_MAX) - { t = buf; - *s++ = *t++; - m--; - } - else - { *s++ = SOAP_UNKNOWN_CHAR; - m = 0; - } - } - else -#endif -#endif - *s++ = (char)(c & 0xFF); - } - l++; - if (maxlen >= 0 && l > maxlen) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); - soap->error = SOAP_LENGTH; - return NULL; - } - } - } -end: - soap_unget(soap, c); - *s = '\0'; -#ifdef WITH_FAST - t = soap_strdup(soap, soap->labbuf); -#else - soap_size_block(soap, NULL, i+1); - t = soap_save_block(soap, NULL, 0); -#endif - if (l < minlen) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "String too short: %ld chars, minlen=%ld\n", l, minlen)); - soap->error = SOAP_LENGTH; - return NULL; - } -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { if (flag == 3) - soap->dom->tail = t; - else - soap->dom->data = t; - } -#endif - if (flag == 2) - if (soap_s2QName(soap, t, &t, minlen, maxlen)) - return NULL; - return t; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_wstring_out(struct soap *soap, const wchar_t *s, int flag) -{ const char *t; - char tmp; - register soap_wchar c; -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - { wchar_t *r = (wchar_t*)s; - int n = 1; - while (*r++) - n++; - soap->dom->wide = r = (wchar_t*)soap_malloc(soap, n * sizeof(wchar_t)); - while (n--) - *r++ = *s++; - return SOAP_OK; - } -#endif - while ((c = *s++)) - { switch (c) - { - case 0x09: - if (flag) - t = " "; - else - t = "\t"; - break; - case 0x0A: - if (flag || !(soap->mode & SOAP_XML_CANONICAL)) - t = " "; - else - t = "\n"; - break; - case 0x0D: - t = " "; - break; - case '&': - t = "&"; - break; - case '<': - t = "<"; - break; - case '>': - if (flag) - t = ">"; - else - t = ">"; - break; - case '"': - if (flag) - t = """; - else - t = "\""; - break; - default: - if (c >= 0x20 && c < 0x80) - { tmp = (char)c; - if (soap_send_raw(soap, &tmp, 1)) - return soap->error; - } - else if (soap_pututf8(soap, (unsigned long)c)) - return soap->error; - continue; - } - if (soap_send(soap, t)) - return soap->error; - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_2 -SOAP_FMAC1 -wchar_t * -SOAP_FMAC2 -soap_wstring_in(struct soap *soap, int flag, long minlen, long maxlen) -{ wchar_t *s; - register int i, n = 0, f = 0; - register long l = 0; - register soap_wchar c; - char *t = NULL; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Reading wide string content\n")); - if (soap->peeked) - { if (*soap->tag) - { -#ifndef WITH_LEAN - struct soap_attribute *tp; - t = soap->tmpbuf; - *t = '<'; - t[sizeof(soap->tmpbuf)-1] = '\0'; - strncpy(t + 1, soap->tag, sizeof(soap->tmpbuf) - 2); - t += strlen(t); - for (tp = soap->attributes; tp; tp = tp->next) - { if (tp->visible) - { if (t >= soap->tmpbuf + sizeof(soap->tmpbuf) - 2) - break; - *t++ = ' '; - strcpy(t, tp->name); - t += strlen(t); - if (t >= soap->tmpbuf + sizeof(soap->tmpbuf) - 2) - break; - if (tp->value) - { *t++ = '='; - *t++ = '"'; - strcpy(t, tp->value); - t += strlen(t); - *t++ = '"'; - } - } - } - if (!soap->body) - *t++ = '/'; - *t++ = '>'; - *t = '\0'; - t = soap->tmpbuf; -#endif - if (soap->body) - n = 1; - f = 1; - soap->peeked = 0; - } - } - if (soap_new_block(soap) == NULL) - return NULL; - for (;;) - { if (!(s = (wchar_t*)soap_push_block(soap, NULL, sizeof(wchar_t)*SOAP_BLKLEN))) - return NULL; - for (i = 0; i < SOAP_BLKLEN; i++) - { if (t) - { *s++ = (wchar_t)*t++; - if (!*t) - t = NULL; - continue; - } - c = soap_getutf8(soap); - switch (c) - { - case SOAP_TT: - if (n == 0) - goto end; - n--; - *s++ = '<'; - soap_unget(soap, '/'); - break; - case SOAP_LT: - if (f && n == 0) - goto end; - n++; - *s++ = '<'; - break; - case SOAP_GT: - *s++ = '>'; - break; - case SOAP_QT: - *s++ = '"'; - break; - case SOAP_AP: - *s++ = '\''; - break; - case '/': - if (n > 0) - { c = soap_getutf8(soap); - if (c == SOAP_GT) - n--; - soap_unget(soap, c); - } - *s++ = '/'; - break; - case '<': - if (flag) - *s++ = (soap_wchar)'<'; - else - { *s++ = (soap_wchar)'&'; - t = (char*)"lt;"; - } - break; - case '>': - if (flag) - *s++ = (soap_wchar)'>'; - else - { *s++ = (soap_wchar)'&'; - t = (char*)"gt;"; - } - break; - case '"': - if (flag) - *s++ = (soap_wchar)'"'; - else - { *s++ = (soap_wchar)'&'; - t = (char*)"quot;"; - } - break; - default: - if ((int)c == EOF) - goto end; - *s++ = (wchar_t)c & 0x7FFFFFFF; - } - l++; - if (maxlen >= 0 && l > maxlen) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); - soap->error = SOAP_LENGTH; - return NULL; - } - } - } -end: - soap_unget(soap, c); - *s = '\0'; - soap_size_block(soap, NULL, sizeof(wchar_t) * (i + 1)); - if (l < minlen) - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "String too short: %ld chars, minlen=%ld\n", l, minlen)); - soap->error = SOAP_LENGTH; - return NULL; - } - s = (wchar_t*)soap_save_block(soap, NULL, NULL, 0); -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - soap->dom->wide = s; -#endif - return s; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_int2s(struct soap *soap, int n) -{ return soap_long2s(soap, (long)n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outint(struct soap *soap, const char *tag, int id, const int *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_long2s(soap, (long)*p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2int(struct soap *soap, const char *s, int *p) -{ if (s) - { char *r; -#ifndef WITH_NOIO -#ifndef WITH_LEAN - soap_reset_errno; -#endif -#endif - *p = (int)soap_strtol(s, &r, 10); - if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r -#ifndef WITH_NOIO -#ifndef WITH_LEAN - || soap_errno == SOAP_ERANGE -#endif -#endif - ) - soap->error = SOAP_TYPE; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int * -SOAP_FMAC2 -soap_inint(struct soap *soap, const char *tag, int *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":int") - && soap_match_tag(soap, soap->type, ":short") - && soap_match_tag(soap, soap->type, ":byte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (int*)soap_id_enter(soap, soap->id, p, t, sizeof(int), 0, NULL, NULL, NULL); - if (*soap->href) - p = (int*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(int), 0, NULL); - else if (p) - { if (soap_s2int(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_long2s(struct soap *soap, long n) -{ sprintf(soap->tmpbuf, "%ld", n); - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outlong(struct soap *soap, const char *tag, int id, const long *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_long2s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2long(struct soap *soap, const char *s, long *p) -{ if (s) - { char *r; -#ifndef WITH_NOIO -#ifndef WITH_LEAN - soap_reset_errno; -#endif -#endif - *p = soap_strtol(s, &r, 10); - if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r -#ifndef WITH_NOIO -#ifndef WITH_LEAN - || soap_errno == SOAP_ERANGE -#endif -#endif - ) - soap->error = SOAP_TYPE; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -long * -SOAP_FMAC2 -soap_inlong(struct soap *soap, const char *tag, long *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":int") - && soap_match_tag(soap, soap->type, ":short") - && soap_match_tag(soap, soap->type, ":byte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (long*)soap_id_enter(soap, soap->id, p, t, sizeof(long), 0, NULL, NULL, NULL); - if (*soap->href) - p = (long*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(long), 0, NULL); - else if (p) - { if (soap_s2long(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_LONG642s(struct soap *soap, LONG64 n) -{ sprintf(soap->tmpbuf, SOAP_LONG_FORMAT, n); - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outLONG64(struct soap *soap, const char *tag, int id, const LONG64 *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_LONG642s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2LONG64(struct soap *soap, const char *s, LONG64 *p) -{ if (s) - { -#ifdef HAVE_STRTOLL - char *r; -#ifndef WITH_NOIO -#ifndef WITH_LEAN - soap_reset_errno; -#endif -#endif - *p = strtoll(s, &r, 10); - if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r -#ifndef WITH_NOIO -#ifndef WITH_LEAN - || soap_errno == SOAP_ERANGE -#endif -#endif - ) -#else -# ifdef HAVE_SSCANF - if (sscanf(s, SOAP_LONG_FORMAT, p) != 1) -# endif -#endif - soap->error = SOAP_TYPE; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -LONG64 * -SOAP_FMAC2 -soap_inLONG64(struct soap *soap, const char *tag, LONG64 *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":integer") - && soap_match_tag(soap, soap->type, ":positiveInteger") - && soap_match_tag(soap, soap->type, ":negativeInteger") - && soap_match_tag(soap, soap->type, ":nonPositiveInteger") - && soap_match_tag(soap, soap->type, ":nonNegativeInteger") - && soap_match_tag(soap, soap->type, ":long") - && soap_match_tag(soap, soap->type, ":int") - && soap_match_tag(soap, soap->type, ":short") - && soap_match_tag(soap, soap->type, ":byte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (LONG64*)soap_id_enter(soap, soap->id, p, t, sizeof(LONG64), 0, NULL, NULL, NULL); - if (*soap->href) - p = (LONG64*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(LONG64), 0, NULL); - else if (p) - { if (soap_s2LONG64(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_byte2s(struct soap *soap, char n) -{ return soap_long2s(soap, (long)n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outbyte(struct soap *soap, const char *tag, int id, const char *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_long2s(soap, (long)*p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2byte(struct soap *soap, const char *s, char *p) -{ if (s) - { long n; - char *r; - n = soap_strtol(s, &r, 10); - if (s == r || *r || n < -128 || n > 127) - soap->error = SOAP_TYPE; - *p = (char)n; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_inbyte(struct soap *soap, const char *tag, char *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":byte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (char*)soap_id_enter(soap, soap->id, p, t, sizeof(char), 0, NULL, NULL, NULL); - if (*soap->href) - p = (char*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(char), 0, NULL); - else if (p) - { if (soap_s2byte(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_short2s(struct soap *soap, short n) -{ return soap_long2s(soap, (long)n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outshort(struct soap *soap, const char *tag, int id, const short *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_long2s(soap, (long)*p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2short(struct soap *soap, const char *s, short *p) -{ if (s) - { long n; - char *r; - n = soap_strtol(s, &r, 10); - if (s == r || *r || n < -32768 || n > 32767) - soap->error = SOAP_TYPE; - *p = (short)n; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -short * -SOAP_FMAC2 -soap_inshort(struct soap *soap, const char *tag, short *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":short") - && soap_match_tag(soap, soap->type, ":byte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (short*)soap_id_enter(soap, soap->id, p, t, sizeof(short), 0, NULL, NULL, NULL); - if (*soap->href) - p = (short*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(short), 0, NULL); - else if (p) - { if (soap_s2short(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_float2s(struct soap *soap, float n) -{ char *s; - if (soap_isnan((double)n)) - return "NaN"; - if (soap_ispinff(n)) - return "INF"; - if (soap_isninff(n)) - return "-INF"; - s = soap->tmpbuf; -#if defined(HAVE_SPRINTF_L) - sprintf_l(s, soap->c_locale, soap->float_format, n); -#else - sprintf(s, soap->float_format, n); - s = strchr(s, ','); /* convert decimal comma to DP */ - if (s) - *s = '.'; -#endif - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outfloat(struct soap *soap, const char *tag, int id, const float *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_float2s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2float(struct soap *soap, const char *s, float *p) -{ if (s) - { if (!*s) - return soap->error = SOAP_TYPE; - if (!soap_tag_cmp(s, "INF")) - *p = FLT_PINFTY; - else if (!soap_tag_cmp(s, "+INF")) - *p = FLT_PINFTY; - else if (!soap_tag_cmp(s, "-INF")) - *p = FLT_NINFTY; - else if (!soap_tag_cmp(s, "NaN")) - *p = FLT_NAN; - else - { -/* On some systems strtof requires -std=c99 or does not even link: so we try to use strtod first */ -#if defined(HAVE_STRTOD_L) - char *r; - *p = (float)strtod_l(s, &r, soap->c_locale); - if (*r) -#elif defined(HAVE_STRTOD) - char *r; - *p = (float)strtod(s, &r); - if (*r) -#elif defined(HAVE_STRTOF_L) - char *r; - *p = strtof_l((char*)s, &r, soap->c_locale); - if (*r) -#elif defined(HAVE_STRTOF) - char *r; - *p = strtof((char*)s, &r); - if (*r) -#endif - { -#if defined(HAVE_SSCANF_L) && !defined(HAVE_STRTOF_L) && !defined(HAVE_STRTOD_L) - if (sscanf_l(s, soap->c_locale, "%g", p) != 1) - soap->error = SOAP_TYPE; -#elif defined(HAVE_SSCANF) - if (sscanf(s, "%g", p) != 1) - soap->error = SOAP_TYPE; -#else - soap->error = SOAP_TYPE; -#endif - } - } - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -static int soap_isnumeric(struct soap *soap, const char *type) -{ if (soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":float") - && soap_match_tag(soap, soap->type, ":double") - && soap_match_tag(soap, soap->type, ":decimal") - && soap_match_tag(soap, soap->type, ":integer") - && soap_match_tag(soap, soap->type, ":positiveInteger") - && soap_match_tag(soap, soap->type, ":negativeInteger") - && soap_match_tag(soap, soap->type, ":nonPositiveInteger") - && soap_match_tag(soap, soap->type, ":nonNegativeInteger") - && soap_match_tag(soap, soap->type, ":long") - && soap_match_tag(soap, soap->type, ":int") - && soap_match_tag(soap, soap->type, ":short") - && soap_match_tag(soap, soap->type, ":byte") - && soap_match_tag(soap, soap->type, ":unsignedLong") - && soap_match_tag(soap, soap->type, ":unsignedInt") - && soap_match_tag(soap, soap->type, ":unsignedShort") - && soap_match_tag(soap, soap->type, ":unsignedByte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return SOAP_ERR; - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -float * -SOAP_FMAC2 -soap_infloat(struct soap *soap, const char *tag, float *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type != '\0' && soap_isnumeric(soap, type)) - return NULL; -#endif - p = (float*)soap_id_enter(soap, soap->id, p, t, sizeof(float), 0, NULL, NULL, NULL); - if (*soap->href) - p = (float*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(float), 0, NULL); - else if (p) - { if (soap_s2float(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_double2s(struct soap *soap, double n) -{ char *s; - if (soap_isnan(n)) - return "NaN"; - if (soap_ispinfd(n)) - return "INF"; - if (soap_isninfd(n)) - return "-INF"; - s = soap->tmpbuf; -#if defined(HAVE_SPRINTF_L) - sprintf_l(s, soap->c_locale, soap->double_format, n); -#else - sprintf(s, soap->double_format, n); - s = strchr(s, ','); /* convert decimal comma to DP */ - if (s) - *s = '.'; -#endif - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outdouble(struct soap *soap, const char *tag, int id, const double *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_double2s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2double(struct soap *soap, const char *s, double *p) -{ if (s) - { if (!*s) - return soap->error = SOAP_TYPE; - if (!soap_tag_cmp(s, "INF")) - *p = DBL_PINFTY; - else if (!soap_tag_cmp(s, "+INF")) - *p = DBL_PINFTY; - else if (!soap_tag_cmp(s, "-INF")) - *p = DBL_NINFTY; - else if (!soap_tag_cmp(s, "NaN")) - *p = DBL_NAN; - else - { -#if defined(HAVE_STRTOD_L) - char *r; - *p = strtod_l(s, &r, soap->c_locale); - if (*r) -#elif defined(HAVE_STRTOD) - char *r; - *p = strtod(s, &r); - if (*r) -#endif - { -#if defined(HAVE_SSCANF_L) && !defined(HAVE_STRTOF_L) && !defined(HAVE_STRTOD_L) - if (sscanf_l(s, soap->c_locale, "%lg", p) != 1) - soap->error = SOAP_TYPE; -#elif defined(HAVE_SSCANF) - if (sscanf(s, "%lg", p) != 1) - soap->error = SOAP_TYPE; -#else - soap->error = SOAP_TYPE; -#endif - } - } - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -double * -SOAP_FMAC2 -soap_indouble(struct soap *soap, const char *tag, double *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type != '\0' && soap_isnumeric(soap, type)) - return NULL; -#endif - p = (double*)soap_id_enter(soap, soap->id, p, t, sizeof(double), 0, NULL, NULL, NULL); - if (*soap->href) - p = (double*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(double), 0, NULL); - else if (p) - { if (soap_s2double(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_unsignedByte2s(struct soap *soap, unsigned char n) -{ return soap_unsignedLong2s(soap, (unsigned long)n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outunsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2unsignedByte(struct soap *soap, const char *s, unsigned char *p) -{ if (s) - { unsigned long n; - char *r; - n = soap_strtoul(s, &r, 10); - if (s == r || *r || n > 255) - soap->error = SOAP_TYPE; - *p = (unsigned char)n; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -unsigned char * -SOAP_FMAC2 -soap_inunsignedByte(struct soap *soap, const char *tag, unsigned char *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":unsignedByte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (unsigned char*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned char), 0, NULL, NULL, NULL); - if (*soap->href) - p = (unsigned char*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned char), 0, NULL); - else if (p) - { if (soap_s2unsignedByte(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_unsignedShort2s(struct soap *soap, unsigned short n) -{ return soap_unsignedLong2s(soap, (unsigned long)n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outunsignedShort(struct soap *soap, const char *tag, int id, const unsigned short *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2unsignedShort(struct soap *soap, const char *s, unsigned short *p) -{ if (s) - { unsigned long n; - char *r; - n = soap_strtoul(s, &r, 10); - if (s == r || *r || n > 65535) - soap->error = SOAP_TYPE; - *p = (unsigned short)n; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -unsigned short * -SOAP_FMAC2 -soap_inunsignedShort(struct soap *soap, const char *tag, unsigned short *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":unsignedShort") - && soap_match_tag(soap, soap->type, ":unsignedByte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (unsigned short*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned short), 0, NULL, NULL, NULL); - if (*soap->href) - p = (unsigned short*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned short), 0, NULL); - else if (p) - { if (soap_s2unsignedShort(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_unsignedInt2s(struct soap *soap, unsigned int n) -{ return soap_unsignedLong2s(soap, (unsigned long)n); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outunsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2unsignedInt(struct soap *soap, const char *s, unsigned int *p) -{ if (s) - { char *r; -#ifndef WITH_NOIO -#ifndef WITH_LEAN - soap_reset_errno; -#endif -#endif - *p = (unsigned int)soap_strtoul(s, &r, 10); - if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r -#ifndef WITH_NOIO -#ifndef WITH_LEAN - || soap_errno == SOAP_ERANGE -#endif -#endif - ) - soap->error = SOAP_TYPE; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -unsigned int * -SOAP_FMAC2 -soap_inunsignedInt(struct soap *soap, const char *tag, unsigned int *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":unsignedInt") - && soap_match_tag(soap, soap->type, ":unsignedShort") - && soap_match_tag(soap, soap->type, ":unsignedByte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (unsigned int*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned int), 0, NULL, NULL, NULL); - if (*soap->href) - p = (unsigned int*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned int), 0, NULL); - else if (p) - { if (soap_s2unsignedInt(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_unsignedLong2s(struct soap *soap, unsigned long n) -{ sprintf(soap->tmpbuf, "%lu", n); - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outunsignedLong(struct soap *soap, const char *tag, int id, const unsigned long *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_unsignedLong2s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2unsignedLong(struct soap *soap, const char *s, unsigned long *p) -{ if (s) - { char *r; -#ifndef WITH_NOIO -#ifndef WITH_LEAN - soap_reset_errno; -#endif -#endif - *p = soap_strtoul(s, &r, 10); - if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r -#ifndef WITH_NOIO -#ifndef WITH_LEAN - || soap_errno == SOAP_ERANGE -#endif -#endif - ) - soap->error = SOAP_TYPE; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -unsigned long * -SOAP_FMAC2 -soap_inunsignedLong(struct soap *soap, const char *tag, unsigned long *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; -#ifndef WITH_LEAN - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":unsignedInt") - && soap_match_tag(soap, soap->type, ":unsignedShort") - && soap_match_tag(soap, soap->type, ":unsignedByte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } -#endif - p = (unsigned long*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned long), 0, NULL, NULL, NULL); - if (*soap->href) - p = (unsigned long*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned long), 0, NULL); - else if (p) - { if (soap_s2unsignedLong(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_ULONG642s(struct soap *soap, ULONG64 n) -{ sprintf(soap->tmpbuf, SOAP_ULONG_FORMAT, n); - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outULONG64(struct soap *soap, const char *tag, int id, const ULONG64 *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_ULONG642s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2ULONG64(struct soap *soap, const char *s, ULONG64 *p) -{ if (s) - { -#ifdef HAVE_STRTOULL - char *r; -#ifndef WITH_NOIO -#ifndef WITH_LEAN - soap_reset_errno; -#endif -#endif - *p = strtoull(s, &r, 10); - if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r -#ifndef WITH_NOIO -#ifndef WITH_LEAN - || soap_errno == SOAP_ERANGE -#endif -#endif - ) -#else -#ifdef HAVE_SSCANF - if (sscanf(s, SOAP_ULONG_FORMAT, p) != 1) -#endif -#endif - soap->error = SOAP_TYPE; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -ULONG64 * -SOAP_FMAC2 -soap_inULONG64(struct soap *soap, const char *tag, ULONG64 *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":positiveInteger") - && soap_match_tag(soap, soap->type, ":nonNegativeInteger") - && soap_match_tag(soap, soap->type, ":unsignedLong") - && soap_match_tag(soap, soap->type, ":unsignedInt") - && soap_match_tag(soap, soap->type, ":unsignedShort") - && soap_match_tag(soap, soap->type, ":unsignedByte")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } - p = (ULONG64*)soap_id_enter(soap, soap->id, p, t, sizeof(ULONG64), 0, NULL, NULL, NULL); - if (*soap->href) - p = (ULONG64*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(ULONG64), 0, NULL); - else if (p) - { if (soap_s2ULONG64(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2string(struct soap *soap, const char *s, char **t, long minlen, long maxlen) -{ if (s) - { long l = (long)strlen(s); - if ((maxlen >= 0 && l > maxlen) || l < minlen) - return soap->error = SOAP_LENGTH; - if (!(*t = soap_strdup(soap, s))) - return soap->error = SOAP_EOM; - if (!(soap->mode & (SOAP_ENC_LATIN | SOAP_C_UTFSTRING))) - { char *r = *t; - /* remove non-ASCII chars */ - for (s = *t; *s; s++) - if (!(*s & 0x80)) - *r++ = *s; - *r = '\0'; - } - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2QName(struct soap *soap, const char *s, char **t, long minlen, long maxlen) -{ if (s) - { long l = (long)strlen(s); - if ((maxlen >= 0 && l > maxlen) || l < minlen) - return soap->error = SOAP_LENGTH; - soap->labidx = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Normalized namespace(s) of QNames '%s'", s)); - /* convert (by prefix normalize prefix) all QNames in s */ - for (;;) - { size_t n; - struct soap_nlist *np; - register const char *p; - /* skip blanks */ - while (*s && soap_blank(*s)) - s++; - if (!*s) - break; - /* find next QName */ - n = 1; - while (s[n] && !soap_blank(s[n])) - n++; - np = soap->nlist; - /* if there is no namespace stack, or prefix is "xml" then copy string */ - if (!np || !strncmp(s, "xml:", 4)) - { soap_append_lab(soap, s, n); - } - else /* we normalize the QName by replacing its prefix */ - { for (p = s; *p && p < s + n; p++) - if (*p == ':') - break; - if (*p == ':') - { size_t k = p - s; - while (np && (strncmp(np->id, s, k) || np->id[k])) - np = np->next; - p++; - } - else - { while (np && *np->id) - np = np->next; - p = s; - } - /* replace prefix */ - if (np) - { if (np->index >= 0 && soap->local_namespaces) - { const char *q = soap->local_namespaces[np->index].id; - if (q) - soap_append_lab(soap, q, strlen(q)); - } - else if (np->ns) - { soap_append_lab(soap, "\"", 1); - soap_append_lab(soap, np->ns, strlen(np->ns)); - soap_append_lab(soap, "\"", 1); - } - else - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\nNamespace prefix of '%s' not defined (index=%d, URI=%s)\n", s, np->index, np->ns?np->ns:SOAP_STR_EOS)); - return soap->error = SOAP_NAMESPACE; - } - } - else if (s[n]) /* no namespace, part of string */ - { soap_append_lab(soap, s, n); - } - else /* no namespace: assume "" namespace */ - { soap_append_lab(soap, "\"\"", 2); - } - soap_append_lab(soap, ":", 1); - soap_append_lab(soap, p, n - (p-s)); - } - /* advance to next and add spacing */ - s += n; - if (*s) - soap_append_lab(soap, " ", 1); - } - soap_append_lab(soap, SOAP_STR_EOS, 1); - *t = soap_strdup(soap, soap->labbuf); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, " into '%s'\n", *t)); - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_QName2s(struct soap *soap, const char *s) -{ const char *t = NULL; - if (s) - { soap->labidx = 0; - for (;;) - { size_t n; - /* skip blanks */ - while (*s && soap_blank(*s)) - s++; - if (!*s) - break; - /* find next QName */ - n = 1; - while (s[n] && !soap_blank(s[n])) - n++; - /* normal prefix: pass string as is */ - if (*s != '"') - { soap_append_lab(soap, s, n); -#ifndef WITH_LEAN - if ((soap->mode & SOAP_XML_CANONICAL)) - { const char *r = strchr(s, ':'); - if (r) - soap_utilize_ns(soap, s, r - s); - } -#endif - } - else /* URL-based string prefix */ - { const char *q; - s++; - q = strchr(s, '"'); - if (q) - { struct Namespace *p = soap->local_namespaces; - if (p) - { for (; p->id; p++) - { if (p->ns) - if (!soap_tag_cmp(s, p->ns)) - break; - if (p->in) - if (!soap_tag_cmp(s, p->in)) - break; - } - } - /* URL is in the namespace table? */ - if (p && p->id) - { soap_append_lab(soap, p->id, strlen(p->id)); - } - else /* not in namespace table: create xmlns binding */ - { char *r = soap_strdup(soap, s); - r[q-s] = '\0'; - sprintf(soap->tmpbuf, "xmlns:_%d", soap->idnum++); - soap_set_attr(soap, soap->tmpbuf, r, 1); - soap_append_lab(soap, soap->tmpbuf + 6, strlen(soap->tmpbuf + 6)); - } - soap_append_lab(soap, q + 1, n - (q-s) - 1); - } - } - /* advance to next and add spacing */ - s += n; - if (*s) - soap_append_lab(soap, " ", 1); - } - soap_append_lab(soap, SOAP_STR_EOS, 1); - t = soap_strdup(soap, soap->labbuf); - } - return t; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2wchar(struct soap *soap, const char *s, wchar_t **t, long minlen, long maxlen) -{ if (s) - { long l; - wchar_t *r; - *t = r = (wchar_t*)soap_malloc(soap, sizeof(wchar_t) * (strlen(s) + 1)); - if (!r) - return soap->error = SOAP_EOM; - if (soap->mode & SOAP_ENC_LATIN) - { while (*s) - *r++ = (wchar_t)*s++; - } - else - { /* Convert UTF8 to wchar */ - while (*s) - { register soap_wchar c, c1, c2, c3, c4; - c = (unsigned char)*s++; - if (c < 0x80) - *r++ = (wchar_t)c; - else - { c1 = (soap_wchar)*s++ & 0x3F; - if (c < 0xE0) - *r++ = (wchar_t)(((soap_wchar)(c & 0x1F) << 6) | c1); - else - { c2 = (soap_wchar)*s++ & 0x3F; - if (c < 0xF0) - *r++ = (wchar_t)(((soap_wchar)(c & 0x0F) << 12) | (c1 << 6) | c2); - else - { c3 = (soap_wchar)*s++ & 0x3F; - if (c < 0xF8) - *r++ = (wchar_t)(((soap_wchar)(c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3); - else - { c4 = (soap_wchar)*s++ & 0x3F; - if (c < 0xFC) - *r++ = (wchar_t)(((soap_wchar)(c & 0x03) << 24) | (c1 << 18) | (c2 << 12) | (c3 << 6) | c4); - else - *r++ = (wchar_t)(((soap_wchar)(c & 0x01) << 30) | (c1 << 24) | (c2 << 18) | (c3 << 12) | (c4 << 6) | (soap_wchar)(*s++ & 0x3F)); - } - } - } - } - } - } - *r = L'\0'; - l = (long)(r - *t); - if ((maxlen >= 0 && l > maxlen) || l < minlen) - return soap->error = SOAP_LENGTH; - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_wchar2s(struct soap *soap, const wchar_t *s) -{ register soap_wchar c; - register char *r, *t; - const wchar_t *q = s; - size_t n = 0; - while ((c = *q++)) - { if (c > 0 && c < 0x80) - n++; - else - n += 6; - } - r = t = (char*)soap_malloc(soap, n + 1); - if (r) - { /* Convert wchar to UTF8 */ - while ((c = *s++)) - { if (c > 0 && c < 0x80) - *t++ = (char)c; - else - { if (c < 0x0800) - *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); - else - { if (c < 0x010000) - *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); - else - { if (c < 0x200000) - *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); - else - { if (c < 0x04000000) - *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); - else - { *t++ = (char)(0xFC | ((c >> 30) & 0x01)); - *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); - } - *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); - } - *t++ = (char)(0x80 | (c & 0x3F)); - } - } - *t = '\0'; - } - return r; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outstring(struct soap *soap, const char *tag, int id, char *const*p, const char *type, int n) -{ id = soap_element_id(soap, tag, id, *p, NULL, 0, type, n); - if (id < 0) - return soap->error; - if (!**p && (soap->mode & SOAP_C_NILSTRING)) - return soap_element_null(soap, tag, id, type); - if (soap_element_begin_out(soap, tag, id, type) - || soap_string_out(soap, *p, 0) - || soap_element_end_out(soap, tag)) - return soap->error; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char ** -SOAP_FMAC2 -soap_instring(struct soap *soap, const char *tag, char **p, const char *type, int t, int flag, long minlen, long maxlen) -{ if (soap_element_begin_in(soap, tag, 1, NULL)) - { if (!tag || *tag != '-' || soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - } - if (!p) - { if (!(p = (char**)soap_malloc(soap, sizeof(char*)))) - return NULL; - } - if (soap->null) - *p = NULL; - else if (soap->body) - { *p = soap_string_in(soap, flag, minlen, maxlen); - if (!*p || !(char*)soap_id_enter(soap, soap->id, *p, t, sizeof(char*), 0, NULL, NULL, NULL)) - return NULL; - if (!**p && tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - } - else if (tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - else if (!*soap->href && minlen > 0) - { soap->error = SOAP_LENGTH; - return NULL; - } - else - *p = soap_strdup(soap, SOAP_STR_EOS); - if (*soap->href) - p = (char**)soap_id_lookup(soap, soap->href, (void**)p, t, sizeof(char**), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outwstring(struct soap *soap, const char *tag, int id, wchar_t *const*p, const char *type, int n) -{ id = soap_element_id(soap, tag, id, *p, NULL, 0, type, n); - if (id < 0) - return soap->error; - if (!**p && (soap->mode & SOAP_C_NILSTRING)) - return soap_element_null(soap, tag, id, type); - if (soap_element_begin_out(soap, tag, id, type) - || soap_wstring_out(soap, *p, 0) - || soap_element_end_out(soap, tag)) - return soap->error; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_2 -SOAP_FMAC1 -wchar_t ** -SOAP_FMAC2 -soap_inwstring(struct soap *soap, const char *tag, wchar_t **p, const char *type, int t, long minlen, long maxlen) -{ if (soap_element_begin_in(soap, tag, 1, NULL)) - { if (!tag || *tag != '-' || soap->error != SOAP_NO_TAG) - return NULL; - soap->error = SOAP_OK; - } - if (!p) - { if (!(p = (wchar_t**)soap_malloc(soap, sizeof(wchar_t*)))) - return NULL; - } - if (soap->body) - { *p = soap_wstring_in(soap, 1, minlen, maxlen); - if (!*p || !(wchar_t*)soap_id_enter(soap, soap->id, *p, t, sizeof(wchar_t*), 0, NULL, NULL, NULL)) - return NULL; - if (!**p && tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - } - else if (tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - else if (soap->null) - *p = NULL; - else - *p = soap_wstrdup(soap, (wchar_t*)SOAP_STR_EOS); - if (*soap->href) - p = (wchar_t**)soap_id_lookup(soap, soap->href, (void**)p, t, sizeof(wchar_t**), 0); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -time_t -SOAP_FMAC2 -soap_timegm(struct tm *T) -{ -#if defined(HAVE_TIMEGM) - return timegm(T); -#else - time_t t, g, z; - struct tm tm; - t = mktime(T); - if (t == (time_t)-1) - return (time_t)-1; -#ifdef HAVE_GMTIME_R - gmtime_r(&t, &tm); -#else - tm = *gmtime(&t); -#endif - tm.tm_isdst = 0; - g = mktime(&tm); - if (g == (time_t)-1) - return (time_t)-1; - z = g - t; - return t - z; -#endif -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_dateTime2s(struct soap *soap, time_t n) -{ struct tm T, *pT = &T; -#if defined(HAVE_GMTIME_R) - if (gmtime_r(&n, pT)) - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT); -#elif defined(HAVE_GMTIME) - if ((pT = gmtime(&n))) - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT); -#elif defined(HAVE_GETTIMEOFDAY) - struct timezone tz; - memset((void*)&tz, 0, sizeof(tz)); -#if defined(HAVE_LOCALTIME_R) - if (localtime_r(&n, pT)) - { struct timeval tv; - gettimeofday(&tv, &tz); - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); - sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -tz.tz_minuteswest/60+(pT->tm_isdst!=0), abs(tz.tz_minuteswest)%60); - } -#else - if ((pT = localtime(&n))) - { struct timeval tv; - gettimeofday(&tv, &tz); - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); - sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -tz.tz_minuteswest/60+(pT->tm_isdst!=0), abs(tz.tz_minuteswest)%60); - } -#endif -#elif defined(HAVE_FTIME) - struct timeb t; - memset((void*)&t, 0, sizeof(t)); -#if defined(HAVE_LOCALTIME_R) - if (localtime_r(&n, pT)) - { -#ifdef __BORLANDC__ - ::ftime(&t); -#else - ftime(&t); -#endif - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); - sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -t.timezone/60+(pT->tm_isdst!=0), abs(t.timezone)%60); - } -#else - if ((pT = localtime(&n))) - { -#ifdef __BORLANDC__ - ::ftime(&t); -#else - ftime(&t); -#endif - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); - sprintf(soap->tmpbuf + strlen(soap->tmpbuf), "%+03d:%02d", -t.timezone/60+(pT->tm_isdst!=0), abs(t.timezone)%60); - } -#endif -#elif defined(HAVE_LOCALTIME_R) - if (localtime_r(&n, pT)) - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); -#else - if ((pT = localtime(&n))) - strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); -#endif - else - strcpy(soap->tmpbuf, "1969-12-31T23:59:59Z"); - return soap->tmpbuf; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outdateTime(struct soap *soap, const char *tag, int id, const time_t *p, const char *type, int n) -{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) - || soap_string_out(soap, soap_dateTime2s(soap, *p), 0)) - return soap->error; - return soap_element_end_out(soap, tag); -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_s2dateTime(struct soap *soap, const char *s, time_t *p) -{ if (s) - { char zone[32]; - struct tm T; - const char *t; - *zone = '\0'; - memset((void*)&T, 0, sizeof(T)); - if (strchr(s, '-')) - t = "%d-%d-%dT%d:%d:%d%31s"; - else if (strchr(s, ':')) - t = "%4d%2d%2dT%d:%d:%d%31s"; - else /* parse non-XSD-standard alternative ISO 8601 format */ - t = "%4d%2d%2dT%2d%2d%2d%31s"; - if (sscanf(s, t, &T.tm_year, &T.tm_mon, &T.tm_mday, &T.tm_hour, &T.tm_min, &T.tm_sec, zone) < 6) - return soap->error = SOAP_TYPE; - if (T.tm_year == 1) - T.tm_year = 70; - else - T.tm_year -= 1900; - T.tm_mon--; - if (*zone == '.') - { for (s = zone + 1; *s; s++) - if (*s < '0' || *s > '9') - break; - } - else - s = zone; - if (*s) - { -#ifndef WITH_NOZONE - if (*s == '+' || *s == '-') - { int h = 0, m = 0; - if (s[3] == ':') - { /* +hh:mm */ - sscanf(s, "%d:%d", &h, &m); - if (h < 0) - m = -m; - } - else /* +hhmm */ - { m = (int)soap_strtol(s, NULL, 10); - h = m / 100; - m = m % 100; - } - T.tm_min -= m; - T.tm_hour -= h; - /* put hour and min in range */ - T.tm_hour += T.tm_min / 60; - T.tm_min %= 60; - if (T.tm_min < 0) - { T.tm_min += 60; - T.tm_hour--; - } - T.tm_mday += T.tm_hour / 24; - T.tm_hour %= 24; - if (T.tm_hour < 0) - { T.tm_hour += 24; - T.tm_mday--; - } - /* note: day of the month may be out of range, timegm() handles it */ - } -#endif - *p = soap_timegm(&T); - } - else /* no UTC or timezone, so assume we got a localtime */ - { T.tm_isdst = -1; - *p = mktime(&T); - } - } - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -time_t * -SOAP_FMAC2 -soap_indateTime(struct soap *soap, const char *tag, time_t *p, const char *type, int t) -{ if (soap_element_begin_in(soap, tag, 0, NULL)) - return NULL; - if (*soap->type - && soap_match_tag(soap, soap->type, type) - && soap_match_tag(soap, soap->type, ":dateTime")) - { soap->error = SOAP_TYPE; - soap_revert(soap); - return NULL; - } - p = (time_t*)soap_id_enter(soap, soap->id, p, t, sizeof(time_t), 0, NULL, NULL, NULL); - if (*soap->href) - p = (time_t*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(time_t), 0, NULL); - else if (p) - { if (soap_s2dateTime(soap, soap_value(soap), p)) - return NULL; - } - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outliteral(struct soap *soap, const char *tag, char *const*p, const char *type) -{ int i; - const char *t = NULL; - if (tag && *tag != '-') - { if (soap->local_namespaces && (t = strchr(tag, ':'))) - { strncpy(soap->tmpbuf, tag, t-tag); - soap->tmpbuf[t-tag] = '\0'; - for (i = 0; soap->local_namespaces[i].id; i++) - if (!strcmp(soap->tmpbuf, soap->local_namespaces[i].id)) - break; - t++; - if (soap_element(soap, t, 0, type) - || soap_attribute(soap, "xmlns", soap->local_namespaces[i].ns ? soap->local_namespaces[i].ns : SOAP_STR_EOS) - || soap_element_start_end_out(soap, NULL)) - return soap->error; - } - else - { t = tag; - if (soap_element_begin_out(soap, t, 0, type)) - return soap->error; - } - } - if (p && *p) - { if (soap_send(soap, *p)) - return soap->error; - } - if (t) - return soap_element_end_out(soap, t); - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -char ** -SOAP_FMAC2 -soap_inliteral(struct soap *soap, const char *tag, char **p) -{ if (soap_element_begin_in(soap, tag, 1, NULL)) - { if (soap->error != SOAP_NO_TAG || soap_unget(soap, soap_get(soap)) == SOAP_TT) - return NULL; - soap->error = SOAP_OK; - } - if (!p) - { if (!(p = (char**)soap_malloc(soap, sizeof(char*)))) - return NULL; - } - if (soap->body || (tag && *tag == '-')) - { *p = soap_string_in(soap, 0, -1, -1); - if (!*p) - return NULL; - if (!**p && tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - } - else if (soap->null) - *p = NULL; - else - *p = soap_strdup(soap, SOAP_STR_EOS); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_outwliteral(struct soap *soap, const char *tag, wchar_t *const*p, const char *type) -{ int i; - const char *t = NULL; - if (tag && *tag != '-') - { if (soap->local_namespaces && (t = strchr(tag, ':'))) - { strncpy(soap->tmpbuf, tag, t-tag); - soap->tmpbuf[t-tag] = '\0'; - for (i = 0; soap->local_namespaces[i].id; i++) - if (!strcmp(soap->tmpbuf, soap->local_namespaces[i].id)) - break; - t++; - if (soap_element(soap, t, 0, type) - || soap_attribute(soap, "xmlns", soap->local_namespaces[i].ns ? soap->local_namespaces[i].ns : SOAP_STR_EOS) - || soap_element_start_end_out(soap, NULL)) - return soap->error; - } - else - { t = tag; - if (soap_element_begin_out(soap, t, 0, type)) - return soap->error; - } - if (soap_send(soap, soap->tmpbuf)) - return soap->error; - } - if (p) - { wchar_t c; - const wchar_t *s = *p; - while ((c = *s++)) - { if (soap_pututf8(soap, (unsigned long)c)) - return soap->error; - } - } - if (t) - return soap_element_end_out(soap, t); - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_2 -SOAP_FMAC1 -wchar_t ** -SOAP_FMAC2 -soap_inwliteral(struct soap *soap, const char *tag, wchar_t **p) -{ if (soap_element_begin_in(soap, tag, 1, NULL)) - { if (soap->error != SOAP_NO_TAG || soap_unget(soap, soap_get(soap)) == SOAP_TT) - return NULL; - soap->error = SOAP_OK; - } - if (!p) - { if (!(p = (wchar_t**)soap_malloc(soap, sizeof(wchar_t*)))) - return NULL; - } - if (soap->body) - { *p = soap_wstring_in(soap, 0, -1, -1); - if (!*p) - return NULL; - if (!**p && tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - } - else if (tag && *tag == '-') - { soap->error = SOAP_NO_TAG; - return NULL; - } - else if (soap->null) - *p = NULL; - else - *p = soap_wstrdup(soap, (wchar_t*)SOAP_STR_EOS); - if (soap->body && soap_element_end_in(soap, tag)) - return NULL; - return p; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -const char * -SOAP_FMAC2 -soap_value(struct soap *soap) -{ register size_t i; - register soap_wchar c = 0; - register char *s = soap->tmpbuf; - if (!soap->body) - return SOAP_STR_EOS; - do c = soap_get(soap); - while (soap_blank(c)); - for (i = 0; i < sizeof(soap->tmpbuf) - 1; i++) - { if (c == SOAP_TT || c == SOAP_LT || (int)c == EOF) - break; - *s++ = (char)c; - c = soap_get(soap); - } - for (s--; i > 0; i--, s--) - { if (!soap_blank(*s)) - break; - } - s[1] = '\0'; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element content value='%s'\n", soap->tmpbuf)); - if (c == SOAP_TT || c == SOAP_LT || (int)c == EOF) - soap_unget(soap, c); - else if (soap->mode & SOAP_XML_STRICT) - { soap->error = SOAP_LENGTH; - return NULL; - } -#ifdef WITH_DOM - if ((soap->mode & SOAP_XML_DOM) && soap->dom) - soap->dom->data = soap_strdup(soap, soap->tmpbuf); -#endif - return soap->tmpbuf; /* return non-null pointer */ -} -#endif - -/******************************************************************************/ -#if !defined(WITH_LEANER) || !defined(WITH_NOHTTP) -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getline(struct soap *soap, char *s, int len) -{ int i = len; - soap_wchar c = 0; - for (;;) - { while (--i > 0) - { c = soap_getchar(soap); - if (c == '\r' || c == '\n') - break; - if ((int)c == EOF) - return soap->error = SOAP_EOF; - *s++ = (char)c; - } - if (c != '\n') - c = soap_getchar(soap); /* got \r or something else, now get \n */ - if (c == '\n') - { *s = '\0'; - if (i+1 == len) /* empty line: end of HTTP/MIME header */ - break; - c = soap_get0(soap); - if (c != ' ' && c != '\t') /* HTTP line continuation? */ - break; - } - else if ((int)c == EOF) - return soap->error = SOAP_EOF; - if (i < 0) - return soap->error = SOAP_HDR; - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static size_t -soap_count_attachments(struct soap *soap) -{ -#ifndef WITH_LEANER - register struct soap_multipart *content; - register size_t count = soap->count; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Calculating the message size with attachments, current count=%lu\n", (unsigned long)count)); - if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Calculating the size of DIME attachments\n")); - for (content = soap->dime.first; content; content = content->next) - { count += 12 + ((content->size+3)&(~3)); - if (content->id) - count += ((strlen(content->id)+3)&(~3)); - if (content->type) - count += ((strlen(content->type)+3)&(~3)); - if (content->options) - count += ((((unsigned char)content->options[2] << 8) | ((unsigned char)content->options[3]))+7)&(~3); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Size of DIME attachment content is %lu bytes\n", (unsigned long)content->size)); - } - } - if ((soap->mode & SOAP_ENC_MIME) && soap->mime.boundary) - { register size_t n = strlen(soap->mime.boundary); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Calculating the size of MIME attachments\n")); - for (content = soap->mime.first; content; content = content->next) - { register const char *s; - /* count \r\n--boundary\r\n */ - count += 6 + n; - /* count Content-Type: ...\r\n */ - if (content->type) - count += 16 + strlen(content->type); - /* count Content-Transfer-Encoding: ...\r\n */ - s = soap_code_str(mime_codes, content->encoding); - if (s) - count += 29 + strlen(s); - /* count Content-ID: ...\r\n */ - if (content->id) - count += 14 + strlen(content->id); - /* count Content-Location: ...\r\n */ - if (content->location) - count += 20 + strlen(content->location); - /* count Content-Description: ...\r\n */ - if (content->description) - count += 23 + strlen(content->description); - /* count \r\n...content */ - count += 2 + content->size; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Size of MIME attachment content is %lu bytes\n", (unsigned long)content->size)); - } - /* count \r\n--boundary-- */ - count += 6 + n; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New count is %lu bytes\n", (unsigned long)count)); - return count; -#else - return soap->count; -#endif -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -static int -soap_putdimefield(struct soap *soap, const char *s, size_t n) -{ if (soap_send_raw(soap, s, n)) - return soap->error; - return soap_send_raw(soap, SOAP_STR_PADDING, -(long)n&3); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -char * -SOAP_FMAC2 -soap_dime_option(struct soap *soap, unsigned short optype, const char *option) -{ size_t n; - char *s = NULL; - if (option) - { n = strlen(option); - s = (char*)soap_malloc(soap, n + 5); - if (s) - { s[0] = (char)(optype >> 8); - s[1] = (char)(optype & 0xFF); - s[2] = (char)(n >> 8); - s[3] = (char)(n & 0xFF); - strcpy(s + 4, option); - } - } - return s; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putdimehdr(struct soap *soap) -{ unsigned char tmp[12]; - size_t optlen = 0, idlen = 0, typelen = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Put DIME header id='%s'\n", soap->dime.id?soap->dime.id:SOAP_STR_EOS)); - if (soap->dime.options) - optlen = (((unsigned char)soap->dime.options[2] << 8) | ((unsigned char)soap->dime.options[3])) + 4; - if (soap->dime.id) - { idlen = strlen(soap->dime.id); - if (idlen > 0x0000FFFF) - idlen = 0x0000FFFF; - } - if (soap->dime.type) - { typelen = strlen(soap->dime.type); - if (typelen > 0x0000FFFF) - typelen = 0x0000FFFF; - } - tmp[0] = SOAP_DIME_VERSION | (soap->dime.flags & 0x7); - tmp[1] = soap->dime.flags & 0xF0; - tmp[2] = (char)(optlen >> 8); - tmp[3] = (char)(optlen & 0xFF); - tmp[4] = (char)(idlen >> 8); - tmp[5] = (char)(idlen & 0xFF); - tmp[6] = (char)(typelen >> 8); - tmp[7] = (char)(typelen & 0xFF); - tmp[8] = (char)(soap->dime.size >> 24); - tmp[9] = (char)((soap->dime.size >> 16) & 0xFF); - tmp[10] = (char)((soap->dime.size >> 8) & 0xFF); - tmp[11] = (char)(soap->dime.size & 0xFF); - if (soap_send_raw(soap, (char*)tmp, 12) - || soap_putdimefield(soap, soap->dime.options, optlen) - || soap_putdimefield(soap, soap->dime.id, idlen) - || soap_putdimefield(soap, soap->dime.type, typelen)) - return soap->error; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putdime(struct soap *soap) -{ struct soap_multipart *content; - if (!(soap->mode & SOAP_ENC_DIME)) - return SOAP_OK; - for (content = soap->dime.first; content; content = content->next) - { void *handle; - soap->dime.size = content->size; - soap->dime.id = content->id; - soap->dime.type = content->type; - soap->dime.options = content->options; - soap->dime.flags = SOAP_DIME_VERSION | SOAP_DIME_MEDIA; - if (soap->fdimereadopen && ((handle = soap->fdimereadopen(soap, (void*)content->ptr, content->id, content->type, content->options)) || soap->error)) - { size_t size = content->size; - if (!handle) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimereadopen failed\n")); - return soap->error; - } - if (!size && ((soap->mode & SOAP_ENC_XML) || (soap->mode & SOAP_IO) == SOAP_IO_CHUNK || (soap->mode & SOAP_IO) == SOAP_IO_STORE)) - { size_t chunksize = sizeof(soap->tmpbuf); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked streaming DIME\n")); - do - { size = soap->fdimeread(soap, handle, soap->tmpbuf, chunksize); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimeread returned %lu bytes\n", (unsigned long)size)); - if (size < chunksize) - { soap->dime.flags &= ~SOAP_DIME_CF; - if (!content->next) - soap->dime.flags |= SOAP_DIME_ME; - } - else - soap->dime.flags |= SOAP_DIME_CF; - soap->dime.size = size; - if (soap_putdimehdr(soap) - || soap_putdimefield(soap, soap->tmpbuf, size)) - break; - if (soap->dime.id) - { soap->dime.flags &= ~(SOAP_DIME_MB | SOAP_DIME_MEDIA); - soap->dime.id = NULL; - soap->dime.type = NULL; - soap->dime.options = NULL; - } - } while (size >= chunksize); - } - else - { if (!content->next) - soap->dime.flags |= SOAP_DIME_ME; - if (soap_putdimehdr(soap)) - return soap->error; - do - { size_t bufsize; - if (size < sizeof(soap->tmpbuf)) - bufsize = size; - else - bufsize = sizeof(soap->tmpbuf); - if (!(bufsize = soap->fdimeread(soap, handle, soap->tmpbuf, bufsize))) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimeread failed: insufficient data (%lu bytes remaining from %lu bytes)\n", (unsigned long)size, (unsigned long)content->size)); - soap->error = SOAP_EOF; - break; - } - if (soap_send_raw(soap, soap->tmpbuf, bufsize)) - break; - size -= bufsize; - } while (size); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimereadclose\n")); - soap_send_raw(soap, SOAP_STR_PADDING, -(long)soap->dime.size&3); - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimereadclose\n")); - if (soap->fdimereadclose) - soap->fdimereadclose(soap, handle); - } - else - { if (!content->next) - soap->dime.flags |= SOAP_DIME_ME; - if (soap_putdimehdr(soap) - || soap_putdimefield(soap, (char*)content->ptr, content->size)) - return soap->error; - } - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -static char * -soap_getdimefield(struct soap *soap, size_t n) -{ register soap_wchar c; - register size_t i; - register char *s; - register char *p = NULL; - if (n) - { p = (char*)soap_malloc(soap, n + 1); - if (p) - { s = p; - for (i = n; i > 0; i--) - { if ((int)(c = soap_get1(soap)) == EOF) - { soap->error = SOAP_EOF; - return NULL; - } - *s++ = (char)c; - } - *s = '\0'; - if ((soap->error = soap_move(soap, -(long)n&3))) - return NULL; - } - else - soap->error = SOAP_EOM; - } - return p; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getdimehdr(struct soap *soap) -{ register soap_wchar c; - register char *s; - register int i; - unsigned char tmp[12]; - size_t optlen, idlen, typelen; - if (!(soap->mode & SOAP_ENC_DIME)) - return soap->error = SOAP_DIME_END; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get DIME header\n")); - if (soap->dime.buflen || soap->dime.chunksize) - { if (soap_move(soap, (long)(soap->dime.size - soap_tell(soap)))) - return soap->error = SOAP_EOF; - soap_unget(soap, soap_getchar(soap)); /* skip padding and get hdr */ - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... From chunked\n")); - return SOAP_OK; - } - s = (char*)tmp; - for (i = 12; i > 0; i--) - { if ((int)(c = soap_getchar(soap)) == EOF) - return soap->error = SOAP_EOF; - *s++ = (char)c; - } - if ((tmp[0] & 0xF8) != SOAP_DIME_VERSION) - return soap->error = SOAP_DIME_MISMATCH; - soap->dime.flags = (tmp[0] & 0x7) | (tmp[1] & 0xF0); - optlen = (tmp[2] << 8) | tmp[3]; - idlen = (tmp[4] << 8) | tmp[5]; - typelen = (tmp[6] << 8) | tmp[7]; - soap->dime.size = (tmp[8] << 24) | (tmp[9] << 16) | (tmp[10] << 8) | tmp[11]; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME size=%lu flags=0x%X\n", (unsigned long)soap->dime.size, soap->dime.flags)); - if (!(soap->dime.options = soap_getdimefield(soap, optlen)) && soap->error) - return soap->error; - if (!(soap->dime.id = soap_getdimefield(soap, idlen)) && soap->error) - return soap->error; - if (!(soap->dime.type = soap_getdimefield(soap, typelen)) && soap->error) - return soap->error; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME id=%s, type=%s, options=%s\n", soap->dime.id?soap->dime.id:SOAP_STR_EOS, soap->dime.type?soap->dime.type:"", soap->dime.options?soap->dime.options+4:SOAP_STR_EOS)); - if (soap->dime.flags & SOAP_DIME_ME) - soap->mode &= ~SOAP_ENC_DIME; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getdime(struct soap *soap) -{ while (soap->dime.flags & SOAP_DIME_CF) - { if (soap_getdimehdr(soap)) - return soap->error; - if (soap_move(soap, (long)soap->dime.size)) - return soap->error = SOAP_EOF; - } - if (soap_move(soap, (long)(((soap->dime.size+3)&(~3))-soap_tell(soap)))) - return soap->error = SOAP_EOF; - for (;;) - { register struct soap_multipart *content; - if (soap_getdimehdr(soap)) - break; - if (soap->fdimewriteopen && ((soap->dime.ptr = (char*)soap->fdimewriteopen(soap, soap->dime.id, soap->dime.type, soap->dime.options)) || soap->error)) - { const char *id, *type, *options; - size_t size, n; - if (!soap->dime.ptr) - return soap->error; - id = soap->dime.id; - type = soap->dime.type; - options = soap->dime.options; - for (;;) - { size = soap->dime.size; - for (;;) - { n = soap->buflen - soap->bufidx; - if (size < n) - n = size; - if ((soap->error = soap->fdimewrite(soap, (void*)soap->dime.ptr, soap->buf + soap->bufidx, n))) - break; - size -= n; - if (!size) - { soap->bufidx += n; - break; - } - if (soap_recv(soap)) - { soap->error = SOAP_EOF; - goto end; - } - } - if (soap_move(soap, -(long)soap->dime.size&3)) - { soap->error = SOAP_EOF; - break; - } - if (!(soap->dime.flags & SOAP_DIME_CF)) - break; - if (soap_getdimehdr(soap)) - break; - } -end: - if (soap->fdimewriteclose) - soap->fdimewriteclose(soap, (void*)soap->dime.ptr); - soap->dime.size = 0; - soap->dime.id = id; - soap->dime.type = type; - soap->dime.options = options; - } - else if (soap->dime.flags & SOAP_DIME_CF) - { const char *id, *type, *options; - id = soap->dime.id; - type = soap->dime.type; - options = soap->dime.options; - if (soap_new_block(soap) == NULL) - return SOAP_EOM; - for (;;) - { register soap_wchar c; - register size_t i; - register char *s; - s = (char*)soap_push_block(soap, NULL, soap->dime.size); - if (!s) - return soap->error = SOAP_EOM; - for (i = soap->dime.size; i > 0; i--) - { if ((int)(c = soap_get1(soap)) == EOF) - return soap->error = SOAP_EOF; - *s++ = (char)c; - } - if (soap_move(soap, -(long)soap->dime.size&3)) - return soap->error = SOAP_EOF; - if (!(soap->dime.flags & SOAP_DIME_CF)) - break; - if (soap_getdimehdr(soap)) - return soap->error; - } - soap->dime.size = soap->blist->size++; /* allocate one more for '\0' */ - if (!(soap->dime.ptr = soap_save_block(soap, NULL, NULL, 0))) - return soap->error; - soap->dime.ptr[soap->dime.size] = '\0'; /* force 0-terminated */ - soap->dime.id = id; - soap->dime.type = type; - soap->dime.options = options; - } - else - soap->dime.ptr = soap_getdimefield(soap, soap->dime.size); - content = soap_new_multipart(soap, &soap->dime.first, &soap->dime.last, soap->dime.ptr, soap->dime.size); - if (!content) - return soap->error = SOAP_EOM; - content->id = soap->dime.id; - content->type = soap->dime.type; - content->options = soap->dime.options; - if (soap->error) - return soap->error; - soap_resolve_attachment(soap, content); - } - if (soap->error != SOAP_DIME_END) - return soap->error; - return soap->error = SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getmimehdr(struct soap *soap) -{ struct soap_multipart *content; - do - { if (soap_getline(soap, soap->msgbuf, sizeof(soap->msgbuf))) - return soap->error; - } - while (!*soap->msgbuf); - if (soap->msgbuf[0] == '-' && soap->msgbuf[1] == '-') - { char *s = soap->msgbuf + strlen(soap->msgbuf) - 1; - /* remove white space */ - while (soap_blank(*s)) - s--; - s[1] = '\0'; - if (soap->mime.boundary) - { if (strcmp(soap->msgbuf + 2, soap->mime.boundary)) - return soap->error = SOAP_MIME_ERROR; - } - else - soap->mime.boundary = soap_strdup(soap, soap->msgbuf + 2); - if (soap_getline(soap, soap->msgbuf, sizeof(soap->msgbuf))) - return soap->error; - } - if (soap_set_mime_attachment(soap, NULL, 0, SOAP_MIME_NONE, NULL, NULL, NULL, NULL)) - return soap->error = SOAP_EOM; - content = soap->mime.last; - for (;;) - { register char *key = soap->msgbuf; - register char *val; - if (!*key) - break; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "MIME header: %s\n", key)); - val = strchr(soap->msgbuf, ':'); - if (val) - { *val = '\0'; - do val++; - while (*val && *val <= 32); - if (!soap_tag_cmp(key, "Content-ID")) - content->id = soap_strdup(soap, val); - else if (!soap_tag_cmp(key, "Content-Location")) - content->location = soap_strdup(soap, val); - else if (!soap_tag_cmp(key, "Content-Disposition")) - content->id = soap_strdup(soap, soap_get_header_attribute(soap, val, "name")); - else if (!soap_tag_cmp(key, "Content-Type")) - content->type = soap_strdup(soap, val); - else if (!soap_tag_cmp(key, "Content-Description")) - content->description = soap_strdup(soap, val); - else if (!soap_tag_cmp(key, "Content-Transfer-Encoding")) - content->encoding = (enum soap_mime_encoding)soap_code_int(mime_codes, val, (long)SOAP_MIME_NONE); - } - if (soap_getline(soap, key, sizeof(soap->msgbuf))) - return soap->error; - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_getmime(struct soap *soap) -{ while (soap_get_mime_attachment(soap, NULL)) - ; - return soap->error; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_post_check_mime_attachments(struct soap *soap) -{ soap->imode |= SOAP_MIME_POSTCHECK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_check_mime_attachments(struct soap *soap) -{ if (soap->mode & SOAP_MIME_POSTCHECK) - return soap_get_mime_attachment(soap, NULL) != NULL; - return 0; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -struct soap_multipart * -SOAP_FMAC2 -soap_get_mime_attachment(struct soap *soap, void *handle) -{ register soap_wchar c = 0; - register size_t i, m = 0; - register char *s, *t = NULL; - register struct soap_multipart *content; - register short flag = 0; - if (!(soap->mode & SOAP_ENC_MIME)) - return NULL; - content = soap->mime.last; - if (!content) - { if (soap_getmimehdr(soap)) - return NULL; - content = soap->mime.last; - } - else if (content != soap->mime.first) - { if (soap->fmimewriteopen && ((content->ptr = (char*)soap->fmimewriteopen(soap, (void*)handle, content->id, content->type, content->description, content->encoding)) || soap->error)) - { if (!content->ptr) - return NULL; - } - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Parsing MIME content id=%s type=%s\n", content->id?content->id:SOAP_STR_EOS, content->type?content->type:SOAP_STR_EOS)); - if (!content->ptr && soap_new_block(soap) == NULL) - { soap->error = SOAP_EOM; - return NULL; - } - for (;;) - { if (content->ptr) - s = soap->tmpbuf; - else if (!(s = (char*)soap_push_block(soap, NULL, sizeof(soap->tmpbuf)))) - { soap->error = SOAP_EOM; - return NULL; - } - for (i = 0; i < sizeof(soap->tmpbuf); i++) - { if (m > 0) - { *s++ = *t++; - m--; - } - else - { if (!flag) - { c = soap_get1(soap); - if ((int)c == EOF) - { soap->error = SOAP_EOF; - return NULL; - } - } - if (flag || c == '\r') - { t = soap->msgbuf; - memset(t, 0, sizeof(soap->msgbuf)); - strcpy(t, "\n--"); - if (soap->mime.boundary) - strncat(t, soap->mime.boundary, sizeof(soap->msgbuf)-4); - do c = soap_getchar(soap); - while (c == *t++); - if ((int)c == EOF) - { soap->error = SOAP_EOF; - return NULL; - } - if (!*--t) - goto end; - *t = (char)c; - flag = (c == '\r'); - m = t - soap->msgbuf + 1 - flag; - t = soap->msgbuf; - c = '\r'; - } - *s++ = (char)c; - } - } - if (content->ptr && soap->fmimewrite) - { if ((soap->error = soap->fmimewrite(soap, (void*)content->ptr, soap->tmpbuf, i))) - break; - } - } -end: - *s = '\0'; /* force 0-terminated */ - if (content->ptr) - { if (!soap->error && soap->fmimewrite) - soap->error = soap->fmimewrite(soap, (void*)content->ptr, soap->tmpbuf, i); - if (soap->fmimewriteclose) - soap->fmimewriteclose(soap, (void*)content->ptr); - if (soap->error) - return NULL; - } - else - { content->size = soap_size_block(soap, NULL, i+1)-1; - content->ptr = soap_save_block(soap, NULL, NULL, 0); - } - soap_resolve_attachment(soap, content); - if (c == '-' && soap_getchar(soap) == '-') - { soap->mode &= ~SOAP_ENC_MIME; - if ((soap->mode & SOAP_MIME_POSTCHECK) && soap_end_recv(soap)) - return NULL; - } - else - { while (c != '\r' && (int)c != EOF && soap_blank(c)) - c = soap_getchar(soap); - if (c != '\r' || soap_getchar(soap) != '\n') - { soap->error = SOAP_MIME_ERROR; - return NULL; - } - if (soap_getmimehdr(soap)) - return NULL; - } - return content; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_match_cid(struct soap *soap, const char *s, const char *t) -{ register size_t n; - if (!s) - return 1; - if (!strcmp(s, t)) - return 0; - if (!strncmp(s, "cid:", 4)) - s += 4; - n = strlen(t); - if (*t == '<') - { t++; - n -= 2; - } - if (!strncmp(s, t, n) && !s[n]) - return 0; - soap_decode(soap->tmpbuf, sizeof(soap->tmpbuf), s, SOAP_STR_EOS); - if (!strncmp(soap->tmpbuf, t, n) && !soap->tmpbuf[n]) - return 0; - return 1; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -static void -soap_resolve_attachment(struct soap *soap, struct soap_multipart *content) -{ if (content->id) - { register struct soap_xlist **xp = &soap->xlist; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving attachment data for id=%s\n", content->id)); - while (*xp) - { register struct soap_xlist *xq = *xp; - if (!soap_match_cid(soap, xq->id, content->id)) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Found matching attachment %s for content id=%s\n", xq->id, content->id)); - *xp = xq->next; - *xq->ptr = (unsigned char*)content->ptr; - *xq->size = (int)content->size; - *xq->type = (char*)content->type; - if (content->options) - *xq->options = (char*)content->options; - else - *xq->options = (char*)content->description; - SOAP_FREE(soap, xq); - } - else - xp = &(*xp)->next; - } - } -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putmimehdr(struct soap *soap, struct soap_multipart *content) -{ const char *s; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "MIME attachment type=%s\n", content->type?content->type:SOAP_STR_EOS)); - if (soap_send3(soap, "\r\n--", soap->mime.boundary, "\r\n")) - return soap->error; - if (content->type && soap_send3(soap, "Content-Type: ", content->type, "\r\n")) - return soap->error; - s = soap_code_str(mime_codes, content->encoding); - if (s && soap_send3(soap, "Content-Transfer-Encoding: ", s, "\r\n")) - return soap->error; - if (content->id && soap_send3(soap, "Content-ID: ", content->id, "\r\n")) - return soap->error; - if (content->location && soap_send3(soap, "Content-Location: ", content->location, "\r\n")) - return soap->error; - if (content->description && soap_send3(soap, "Content-Description: ", content->description, "\r\n")) - return soap->error; - return soap_send_raw(soap, "\r\n", 2); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_putmime(struct soap *soap) -{ struct soap_multipart *content; - if (!(soap->mode & SOAP_ENC_MIME) || !soap->mime.boundary) - return SOAP_OK; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending MIME attachments\n")); - for (content = soap->mime.first; content; content = content->next) - { void *handle; - if (soap->fmimereadopen && ((handle = soap->fmimereadopen(soap, (void*)content->ptr, content->id, content->type, content->description)) || soap->error)) - { size_t size = content->size; - if (!handle) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fmimereadopen failed\n")); - return soap->error; - } - if (soap_putmimehdr(soap, content)) - return soap->error; - if (!size) - { if ((soap->mode & SOAP_ENC_XML) || (soap->mode & SOAP_IO) == SOAP_IO_CHUNK || (soap->mode & SOAP_IO) == SOAP_IO_STORE) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked streaming MIME\n")); - do - { size = soap->fmimeread(soap, handle, soap->tmpbuf, sizeof(soap->tmpbuf)); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fmimeread returned %lu bytes\n", (unsigned long)size)); - if (soap_send_raw(soap, soap->tmpbuf, size)) - break; - } while (size); - } - else - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error: cannot chunk streaming MIME (no HTTP chunking)\n")); - } - } - else - { do - { size_t bufsize; - if (size < sizeof(soap->tmpbuf)) - bufsize = size; - else - bufsize = sizeof(soap->tmpbuf); - if (!(bufsize = soap->fmimeread(soap, handle, soap->tmpbuf, bufsize))) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fmimeread failed: insufficient data (%lu bytes remaining from %lu bytes)\n", (unsigned long)size, (unsigned long)content->size)); - soap->error = SOAP_EOF; - break; - } - if (soap_send_raw(soap, soap->tmpbuf, bufsize)) - break; - size -= bufsize; - } while (size); - } - if (soap->fmimereadclose) - soap->fmimereadclose(soap, handle); - } - else - { if (soap_putmimehdr(soap, content) - || soap_send_raw(soap, content->ptr, content->size)) - return soap->error; - } - } - return soap_send3(soap, "\r\n--", soap->mime.boundary, "--"); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_dime(struct soap *soap) -{ soap->omode |= SOAP_ENC_DIME; - soap->dime.first = NULL; - soap->dime.last = NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_mime(struct soap *soap, const char *boundary, const char *start) -{ soap->omode |= SOAP_ENC_MIME; - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->mime.boundary = soap_strdup(soap, boundary); - soap->mime.start = soap_strdup(soap, start); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_clr_dime(struct soap *soap) -{ soap->omode &= ~SOAP_ENC_DIME; - soap->dime.first = NULL; - soap->dime.last = NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_clr_mime(struct soap *soap) -{ soap->omode &= ~SOAP_ENC_MIME; - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->mime.boundary = NULL; - soap->mime.start = NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -static struct soap_multipart* -soap_new_multipart(struct soap *soap, struct soap_multipart **first, struct soap_multipart **last, char *ptr, size_t size) -{ struct soap_multipart *content; - content = (struct soap_multipart*)soap_malloc(soap, sizeof(struct soap_multipart)); - if (content) - { content->next = NULL; - content->ptr = ptr; - content->size = size; - content->id = NULL; - content->type = NULL; - content->options = NULL; - content->encoding = SOAP_MIME_NONE; - content->location = NULL; - content->description = NULL; - if (!*first) - *first = content; - if (*last) - (*last)->next = content; - *last = content; - } - return content; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_dime_attachment(struct soap *soap, char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option) -{ struct soap_multipart *content = soap_new_multipart(soap, &soap->dime.first, &soap->dime.last, ptr, size); - if (!content) - return SOAP_EOM; - content->id = soap_strdup(soap, id); - content->type = soap_strdup(soap, type); - content->options = soap_dime_option(soap, optype, option); - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_mime_attachment(struct soap *soap, char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description) -{ struct soap_multipart *content = soap_new_multipart(soap, &soap->mime.first, &soap->mime.last, ptr, size); - if (!content) - return SOAP_EOM; - content->id = soap_strdup(soap, id); - content->type = soap_strdup(soap, type); - content->encoding = encoding; - content->location = soap_strdup(soap, location); - content->description = soap_strdup(soap, description); - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -SOAP_FMAC1 -struct soap_multipart* -SOAP_FMAC2 -soap_next_multipart(struct soap_multipart *content) -{ if (content) - return content->next; - return NULL; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -static void -soap_select_mime_boundary(struct soap *soap) -{ while (!soap->mime.boundary || soap_valid_mime_boundary(soap)) - { register char *s = soap->mime.boundary; - register size_t n = 0; - if (s) - n = strlen(s); - if (n < 16) - { n = 64; - s = soap->mime.boundary = (char*)soap_malloc(soap, n + 1); - if (!s) - return; - } - strcpy(s, "=="); - s += 2; - n -= 4; - while (n) - { *s++ = soap_base64o[soap_random & 0x3F]; - n--; - } - strcpy(s, "=="); - } - if (!soap->mime.start) - soap->mime.start = ""; -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEANER -#ifndef PALM_1 -static int -soap_valid_mime_boundary(struct soap *soap) -{ register struct soap_multipart *content; - register size_t k; - if (soap->fmimeread) - return SOAP_OK; - k = strlen(soap->mime.boundary); - for (content = soap->mime.first; content; content = content->next) - { if (content->ptr && content->size >= k) - { register const char *p = (const char*)content->ptr; - register size_t i; - for (i = 0; i < content->size - k; i++, p++) - { if (!strncmp(p, soap->mime.boundary, k)) - return SOAP_ERR; - } - } - } - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifdef WITH_GZIP -#ifndef PALM_1 -static int -soap_getgziphdr(struct soap *soap) -{ int i; - soap_wchar c = 0, f = 0; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get gzip header\n")); - for (i = 0; i < 9; i++) - { if ((int)(c = soap_get1(soap) == EOF)) - return soap->error = SOAP_EOF; - if (i == 1 && c == 8) - soap->z_dict = 0; - if (i == 2) - f = c; - } - if (f & 0x04) /* FEXTRA */ - { for (i = soap_get1(soap) | (soap_get1(soap) << 8); i; i--) - { if ((int)soap_get1(soap) == EOF) - return soap->error = SOAP_EOF; - } - } - if (f & 0x08) /* skip FNAME */ - { do - c = soap_get1(soap); - while (c && (int)c != EOF); - } - if ((int)c != EOF && (f & 0x10)) /* skip FCOMMENT */ - { do - c = soap_get1(soap); - while (c && (int)c != EOF); - } - if ((int)c != EOF && (f & 0x02)) /* skip FHCRC (CRC32 is used) */ - { if ((int)(c = soap_get1(soap)) != EOF) - c = soap_get1(soap); - } - if ((int)c == EOF) - return soap->error = SOAP_EOF; - return SOAP_OK; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_begin_recv(struct soap *soap) -{ soap_wchar c; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Initializing for input\n")); - soap->error = SOAP_OK; - soap_free_temp(soap); - soap_set_local_namespaces(soap); - soap->version = 0; /* don't assume we're parsing SOAP content by default */ -#ifndef WITH_NOIDREF - soap_free_iht(soap); -#endif - if ((soap->imode & SOAP_IO) == SOAP_IO_CHUNK) - soap->omode |= SOAP_IO_CHUNK; - soap->imode &= ~(SOAP_IO | SOAP_ENC_MIME); - soap->mode = soap->imode; - if (!soap->keep_alive) - { soap->buflen = 0; - soap->bufidx = 0; - } - if (!(soap->mode & SOAP_IO_KEEPALIVE)) - soap->keep_alive = 0; - soap->ahead = 0; - soap->peeked = 0; - soap->level = 0; - soap->part = SOAP_BEGIN; - soap->alloced = 0; - soap->count = 0; - soap->length = 0; - soap->cdata = 0; - *soap->endpoint = '\0'; - soap->action = NULL; - soap->header = NULL; - soap->fault = NULL; - soap->status = 0; -#ifndef WITH_LEANER - soap->dom = NULL; - soap->dime.chunksize = 0; - soap->dime.buflen = 0; - soap->dime.list = NULL; - soap->dime.first = NULL; - soap->dime.last = NULL; - soap->mime.list = NULL; - soap->mime.first = NULL; - soap->mime.last = NULL; - soap->mime.boundary = NULL; - soap->mime.start = NULL; -#endif -#ifdef WIN32 -#ifndef UNDER_CE -#ifndef WITH_FASTCGI - if (!soap_valid_socket(soap->socket)) -#ifdef __BORLANDC__ - setmode(soap->recvfd, _O_BINARY); -#else - _setmode(soap->recvfd, _O_BINARY); -#endif -#endif -#endif -#endif -#ifdef WITH_ZLIB - soap->mode &= ~SOAP_ENC_ZLIB; - soap->zlib_in = SOAP_ZLIB_NONE; - soap->zlib_out = SOAP_ZLIB_NONE; - soap->d_stream->next_in = Z_NULL; - soap->d_stream->avail_in = 0; - soap->d_stream->next_out = (Byte*)soap->buf; - soap->d_stream->avail_out = SOAP_BUFLEN; - soap->z_ratio_in = 1.0; -#endif -#ifdef WITH_OPENSSL - if (soap->ssl) - ERR_clear_error(); -#endif -#ifndef WITH_LEANER - if (soap->fprepareinitrecv && (soap->error = soap->fprepareinitrecv(soap))) - return soap->error; -#endif - c = soap_getchar(soap); -#ifdef WITH_GZIP - if (c == 0x1F) - { if (soap_getgziphdr(soap)) - return soap->error; - if (inflateInit2(soap->d_stream, -MAX_WBITS) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - if (soap->z_dict) - { if (inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - } - soap->zlib_state = SOAP_ZLIB_INFLATE; - soap->mode |= SOAP_ENC_ZLIB; - soap->zlib_in = SOAP_ZLIB_GZIP; - soap->z_crc = crc32(0L, NULL, 0); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "gzip initialized\n")); - if (!soap->z_buf) - soap->z_buf = (char*)SOAP_MALLOC(soap, SOAP_BUFLEN); - memcpy(soap->z_buf, soap->buf, SOAP_BUFLEN); - /* should not chunk over plain transport, so why bother to check? */ - /* if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) */ - /* soap->z_buflen = soap->bufidx; */ - /* else */ - soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); - soap->d_stream->avail_in = soap->buflen - soap->bufidx; - soap->z_buflen = soap->buflen; - soap->buflen = soap->bufidx; - c = ' '; - } -#endif - while (soap_blank(c)) - c = soap_getchar(soap); -#ifndef WITH_LEANER - if (c == '-' && soap_get0(soap) == '-') - soap->mode |= SOAP_ENC_MIME; - else if ((c & 0xFFFC) == (SOAP_DIME_VERSION | SOAP_DIME_MB) && (soap_get0(soap) & 0xFFF0) == 0x20) - soap->mode |= SOAP_ENC_DIME; - else -#endif - { /* skip BOM */ - if (c == 0xEF && (c = soap_getchar(soap)) == 0xBB && (c = soap_getchar(soap)) == 0xBF) - c = soap_getchar(soap); - /* skip space */ - while (soap_blank(c)) - c = soap_getchar(soap); - } - if ((int)c == EOF) - return soap->error = SOAP_EOF; - soap_unget(soap, c); -#ifndef WITH_NOHTTP - /* if not XML or MIME/DIME/ZLIB, assume HTTP header */ - if (c != '<' && !(soap->mode & (SOAP_ENC_MIME | SOAP_ENC_DIME | SOAP_ENC_ZLIB))) - { soap_mode m = soap->imode; - soap->mode &= ~SOAP_IO; - soap->error = soap->fparse(soap); - if (soap->error && soap->error < SOAP_STOP) - { soap->keep_alive = 0; /* force close later */ - return soap->error; - } - if (soap->error == SOAP_STOP) - return soap->error; - soap->mode = soap->imode; /* if imode is changed, effectuate */ - soap->imode = m; /* restore imode */ -#ifdef WITH_ZLIB - soap->mode &= ~SOAP_ENC_ZLIB; -#endif - if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) - { soap->chunkbuflen = soap->buflen; - soap->buflen = soap->bufidx; - soap->chunksize = 0; - } - /* Note: fparse should not use soap_unget to push back last char */ - if (soap_get0(soap) == (int)EOF) - { if (soap->status == 200) - return soap->error = SOAP_NO_DATA; /* HTTP OK: always expect data */ - return soap->error = soap->status; - } -#ifdef WITH_ZLIB - if (soap->zlib_in != SOAP_ZLIB_NONE) - { -#ifdef WITH_GZIP - if (soap->zlib_in != SOAP_ZLIB_DEFLATE) - { c = soap_get1(soap); - if (c == 0x1F) - { if (soap_getgziphdr(soap)) - return soap->error; - if (inflateInit2(soap->d_stream, -MAX_WBITS) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - soap->z_crc = crc32(0L, NULL, 0); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "gzip initialized\n")); - } - else - { soap_revget1(soap); - if (inflateInit(soap->d_stream) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - soap->zlib_in = SOAP_ZLIB_DEFLATE; - } - } - else -#endif - if (inflateInit(soap->d_stream) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - if (soap->z_dict) - { if (inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len) != Z_OK) - return soap->error = SOAP_ZLIB_ERROR; - } - soap->zlib_state = SOAP_ZLIB_INFLATE; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflate initialized\n")); - soap->mode |= SOAP_ENC_ZLIB; - if (!soap->z_buf) - soap->z_buf = (char*)SOAP_MALLOC(soap, SOAP_BUFLEN); - memcpy(soap->z_buf, soap->buf, SOAP_BUFLEN); - soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); - soap->d_stream->avail_in = soap->buflen - soap->bufidx; - soap->z_buflen = soap->buflen; - soap->buflen = soap->bufidx; - } -#endif -#ifndef WITH_LEANER - if (soap->fpreparerecv && (soap->mode & SOAP_IO) != SOAP_IO_CHUNK && soap->buflen > soap->bufidx) - { int r; - if ((r = soap->fpreparerecv(soap, soap->buf + soap->bufidx, soap->buflen - soap->bufidx))) - return soap->error = r; - } -#endif - if (soap->error) - { if (soap->error == SOAP_FORM && soap->fform) - { soap->error = soap->fform(soap); - if (soap->error == SOAP_OK) - soap->error = SOAP_STOP; /* prevents further processing */ - } - return soap->error; - } - } -#endif -#ifndef WITH_LEANER - if (soap->mode & SOAP_ENC_MIME) - { if (soap_getmimehdr(soap)) - return soap->error; - if (soap->mime.start) - { do - { if (!soap->mime.last->id) - break; - if (!soap_match_cid(soap, soap->mime.start, soap->mime.last->id)) - break; - } while (soap_get_mime_attachment(soap, NULL)); - } - if (soap_get_header_attribute(soap, soap->mime.first->type, "application/dime")) - soap->mode |= SOAP_ENC_DIME; - } - if (soap->mode & SOAP_ENC_DIME) - { if (soap_getdimehdr(soap)) - return soap->error; - if (soap->dime.flags & SOAP_DIME_CF) - { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked DIME SOAP message\n")); - soap->dime.chunksize = soap->dime.size; - if (soap->buflen - soap->bufidx >= soap->dime.chunksize) - { soap->dime.buflen = soap->buflen; - soap->buflen = soap->bufidx + soap->dime.chunksize; - } - else - soap->dime.chunksize -= soap->buflen - soap->bufidx; - } - soap->count = soap->buflen - soap->bufidx; - } -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_envelope_begin_out(struct soap *soap) -{ -#ifndef WITH_LEANER - size_t n = 0; - if ((soap->mode & SOAP_ENC_MIME) && soap->mime.boundary && soap->mime.start && strlen(soap->mime.boundary) + strlen(soap->mime.start) < sizeof(soap->tmpbuf) - 80 ) - { const char *s; - if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) - s = "application/dime"; - else if (soap->version == 2) - { if (soap->mode & SOAP_ENC_MTOM) - s = "application/xop+xml; charset=utf-8; type=\"application/soap+xml\""; - else - s = "application/soap+xml; charset=utf-8"; - } - else if (soap->mode & SOAP_ENC_MTOM) - s = "application/xop+xml; charset=utf-8; type=\"text/xml\""; - else - s = "text/xml; charset=utf-8"; - sprintf(soap->tmpbuf, "--%s\r\nContent-Type: %s\r\nContent-Transfer-Encoding: binary\r\nContent-ID: %s\r\n\r\n", soap->mime.boundary, s, soap->mime.start); - n = strlen(soap->tmpbuf); - if (soap_send_raw(soap, soap->tmpbuf, n)) - return soap->error; - } - if (soap->mode & SOAP_IO_LENGTH) - soap->dime.size = soap->count; /* DIME in MIME correction */ - if (!(soap->mode & SOAP_IO_LENGTH) && (soap->mode & SOAP_ENC_DIME)) - { if (soap_putdimehdr(soap)) - return soap->error; - } -#endif - soap->part = SOAP_IN_ENVELOPE; - return soap_element_begin_out(soap, "SOAP-ENV:Envelope", 0, NULL); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_envelope_end_out(struct soap *soap) -{ if (soap_element_end_out(soap, "SOAP-ENV:Envelope") || ((soap->mode & SOAP_XML_INDENT) && soap_send_raw(soap, "\r\n", 2))) - return soap->error; -#ifndef WITH_LEANER - if ((soap->mode & SOAP_IO_LENGTH) && (soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) - { soap->dime.size = soap->count - soap->dime.size; /* DIME in MIME correction */ - sprintf(soap->id, soap->dime_id_format, 0); - soap->dime.id = soap->id; - if (soap->local_namespaces) - { if (soap->local_namespaces[0].out) - soap->dime.type = (char*)soap->local_namespaces[0].out; - else - soap->dime.type = (char*)soap->local_namespaces[0].ns; - } - soap->dime.options = NULL; - soap->dime.flags = SOAP_DIME_MB | SOAP_DIME_ABSURI; - if (!soap->dime.first) - soap->dime.flags |= SOAP_DIME_ME; - soap->count += 12 + ((strlen(soap->dime.id)+3)&(~3)) + (soap->dime.type ? ((strlen(soap->dime.type)+3)&(~3)) : 0); - } - if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) - return soap_send_raw(soap, SOAP_STR_PADDING, -(long)soap->dime.size&3); -#endif - soap->part = SOAP_END_ENVELOPE; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static char* -soap_get_http_body(struct soap *soap) -{ -#ifndef WITH_LEAN - register size_t l = 0, n = 0; - register char *s; - /* get HTML body of HTTP error content */ - if (!(soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) != SOAP_IO_CHUNK) - { n = soap->length; - if (!n) - return NULL; - } -#ifdef WITH_FAST - soap->labidx = 0; /* use look-aside buffer */ -#else - if (soap_new_block(soap) == NULL) - return NULL; -#endif - for (;;) - { -#ifdef WITH_FAST - register size_t i, k; - if (soap_append_lab(soap, NULL, 0)) /* allocate more space in look-aside buffer if necessary */ - return NULL; - s = soap->labbuf + soap->labidx; /* space to populate */ - k = soap->lablen - soap->labidx; /* number of bytes available */ - soap->labidx = soap->lablen; /* claim this space */ -#else - register size_t i, k = SOAP_BLKLEN; - if (!(s = (char*)soap_push_block(soap, NULL, k))) - return NULL; -#endif - for (i = 0; i < k; i++) - { register soap_wchar c = soap_getchar(soap); - if ((int)c == EOF) - goto end; - *s++ = (char)(c & 0xFF); - l++; - if (n > 0 && l >= n) - goto end; - } - } -end: - *s = '\0'; -#ifdef WITH_FAST - s = soap_strdup(soap, soap->labbuf); -#else - soap_size_block(soap, NULL, i+1); - s = soap_save_block(soap, NULL, 0); -#endif - return s; -#else - return NULL; -#endif -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_envelope_begin_in(struct soap *soap) -{ register struct Namespace *p; - soap->part = SOAP_IN_ENVELOPE; - if (soap_element_begin_in(soap, "SOAP-ENV:Envelope", 0, NULL)) - { if (soap->error == SOAP_TAG_MISMATCH - && !soap_element_begin_in(soap, "Envelope", 0, NULL)) - soap->error = SOAP_VERSIONMISMATCH; - else if (soap->status) - soap->error = soap->status; - return soap->error; - } - p = soap->local_namespaces; - if (p) - { const char *ns = p[0].out; - if (!ns) - ns = p[0].ns; - if (!strcmp(ns, soap_env1)) - { soap->version = 1; /* make sure we use SOAP 1.1 */ - if (p[1].out) - SOAP_FREE(soap, p[1].out); - if ((p[1].out = (char*)SOAP_MALLOC(soap, sizeof(soap_enc1)))) - strcpy(p[1].out, soap_enc1); - } - else if (!strcmp(ns, soap_env2)) - { soap->version = 2; /* make sure we use SOAP 1.2 */ - if (p[1].out) - SOAP_FREE(soap, p[1].out); - if ((p[1].out = (char*)SOAP_MALLOC(soap, sizeof(soap_enc2)))) - strcpy(p[1].out, soap_enc2); - } - } - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_envelope_end_in(struct soap *soap) -{ soap->part = SOAP_END_ENVELOPE; - return soap_element_end_in(soap, "SOAP-ENV:Envelope"); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_body_begin_out(struct soap *soap) -{ soap->part = SOAP_IN_BODY; - if (soap->version == 1) - soap->encoding = 1; -#ifndef WITH_LEAN - if ((soap->mode & SOAP_XML_SEC) && soap_set_attr(soap, "wsu:Id", "Body", 1)) - return soap->error; -#endif - if (soap_element(soap, "SOAP-ENV:Body", 0, NULL)) - return soap->error; - return soap_element_start_end_out(soap, NULL); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_body_end_out(struct soap *soap) -{ if (soap_element_end_out(soap, "SOAP-ENV:Body")) - return soap->error; - soap->part = SOAP_END_BODY; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_body_begin_in(struct soap *soap) -{ soap->part = SOAP_IN_BODY; - if (soap_element_begin_in(soap, "SOAP-ENV:Body", 0, NULL)) - return soap->error; - if (!soap->body) - soap->part = SOAP_NO_BODY; - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_body_end_in(struct soap *soap) -{ if (soap->part == SOAP_NO_BODY) - return soap->error = SOAP_OK; - soap->part = SOAP_END_BODY; - return soap_element_end_in(soap, "SOAP-ENV:Body"); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_recv_header(struct soap *soap) -{ if (soap_getheader(soap) && soap->error == SOAP_TAG_MISMATCH) - soap->error = SOAP_OK; - if (soap->error == SOAP_OK && soap->fheader) - soap->error = soap->fheader(soap); - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_endpoint(struct soap *soap, const char *endpoint) -{ register const char *s; - register size_t i, n; - soap->endpoint[0] = '\0'; - soap->host[0] = '\0'; - soap->path[0] = '/'; - soap->path[1] = '\0'; - soap->port = 80; - if (!endpoint || !*endpoint) - return; -#ifdef WITH_OPENSSL - if (!soap_tag_cmp(endpoint, "https:*")) - soap->port = 443; -#endif - strncpy(soap->endpoint, endpoint, sizeof(soap->endpoint) - 1); - soap->endpoint[sizeof(soap->endpoint) - 1] = '\0'; - s = strchr(endpoint, ':'); - if (s && s[1] == '/' && s[2] == '/') - s += 3; - else - s = endpoint; - n = strlen(s); - if (n >= sizeof(soap->host)) - n = sizeof(soap->host) - 1; -#ifdef WITH_IPV6 - if (s[0] == '[') - { s++; - for (i = 0; i < n; i++) - { if (s[i] == ']') - { s++; - --n; - break; - } - soap->host[i] = s[i]; - } - } - else - { for (i = 0; i < n; i++) - { soap->host[i] = s[i]; - if (s[i] == '/' || s[i] == ':') - break; - } - } -#else - for (i = 0; i < n; i++) - { soap->host[i] = s[i]; - if (s[i] == '/' || s[i] == ':') - break; - } -#endif - soap->host[i] = '\0'; - if (s[i] == ':') - { soap->port = (int)soap_strtol(s + i + 1, NULL, 10); - for (i++; i < n; i++) - if (s[i] == '/') - break; - } - if (i < n && s[i]) - { strncpy(soap->path, s + i, sizeof(soap->path)); - soap->path[sizeof(soap->path) - 1] = '\0'; - } -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_connect(struct soap *soap, const char *endpoint, const char *action) -{ return soap_connect_command(soap, SOAP_POST, endpoint, action); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_connect_command(struct soap *soap, int http_command, const char *endpoints, const char *action) -{ char *endpoint; - const char *s; - if (endpoints && (s = strchr(endpoints, ' '))) - { endpoint = (char*)SOAP_MALLOC(soap, strlen(endpoints) + 1); - for (;;) - { strncpy(endpoint, endpoints, s - endpoints); - endpoint[s - endpoints] = '\0'; - if (soap_try_connect_command(soap, http_command, endpoint, action) != SOAP_TCP_ERROR) - break; - if (!*s) - break; - soap->error = SOAP_OK; - while (*s == ' ') - s++; - endpoints = s; - s = strchr(endpoints, ' '); - if (!s) - s = endpoints + strlen(endpoints); - } - SOAP_FREE(soap, endpoint); - } - else - soap_try_connect_command(soap, http_command, endpoints, action); - return soap->error; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static int -soap_try_connect_command(struct soap *soap, int http_command, const char *endpoint, const char *action) -{ char host[sizeof(soap->host)]; - int port; - size_t count; - soap->error = SOAP_OK; - strcpy(host, soap->host); /* save previous host name: if != then reconnect */ - port = soap->port; /* save previous port to compare */ - soap->status = http_command; - soap_set_endpoint(soap, endpoint); -#ifndef WITH_LEANER - if (soap->fconnect) - { if ((soap->error = soap->fconnect(soap, endpoint, soap->host, soap->port))) - return soap->error; - } - else -#endif - if (soap->fopen && *soap->host) - { if (!soap->keep_alive || !soap_valid_socket(soap->socket) || strcmp(soap->host, host) || soap->port != port || !soap->fpoll || soap->fpoll(soap)) - { soap->keep_alive = 0; /* to force close */ - soap->omode &= ~SOAP_IO_UDP; /* to force close */ - soap_closesock(soap); - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Connect/reconnect to host='%s' path='%s' port=%d\n", soap->host, soap->path, soap->port)); -#ifndef WITH_LEAN - if (!strncmp(endpoint, "soap.udp:", 9)) - soap->omode |= SOAP_IO_UDP; -#endif - soap->socket = soap->fopen(soap, endpoint, soap->host, soap->port); - if (soap->error) - return soap->error; - soap->keep_alive = ((soap->omode & SOAP_IO_KEEPALIVE) != 0); - } - } - count = soap_count_attachments(soap); - if (soap_begin_send(soap)) - return soap->error; - if (http_command == SOAP_GET) - { soap->mode &= ~SOAP_IO; - soap->mode |= SOAP_IO_BUFFER; - } -#ifndef WITH_NOHTTP - soap->action = soap_strdup(soap, action); - if ((soap->mode & SOAP_IO) != SOAP_IO_STORE && !(soap->mode & SOAP_ENC_XML) && endpoint) - { unsigned int k = soap->mode; - soap->mode &= ~(SOAP_IO | SOAP_ENC_ZLIB); - if ((k & SOAP_IO) != SOAP_IO_FLUSH) - soap->mode |= SOAP_IO_BUFFER; - if ((soap->error = soap->fpost(soap, endpoint, soap->host, soap->port, soap->path, action, count))) - return soap->error; -#ifndef WITH_LEANER - if ((k & SOAP_IO) == SOAP_IO_CHUNK) - { if (soap_flush(soap)) - return soap->error; - } -#endif - soap->mode = k; - } - if (http_command == SOAP_GET) - return soap_end_send(soap); -#endif - return SOAP_OK; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_s2base64(struct soap *soap, const unsigned char *s, char *t, int n) -{ register int i; - register unsigned long m; - register char *p; - if (!t) - t = (char*)soap_malloc(soap, (n + 2) / 3 * 4 + 1); - if (!t) - return NULL; - p = t; - t[0] = '\0'; - if (!s) - return p; - for (; n > 2; n -= 3, s += 3) - { m = s[0]; - m = (m << 8) | s[1]; - m = (m << 8) | s[2]; - for (i = 4; i > 0; m >>= 6) - t[--i] = soap_base64o[m & 0x3F]; - t += 4; - } - t[0] = '\0'; - if (n > 0) - { m = 0; - for (i = 0; i < n; i++) - m = (m << 8) | *s++; - for (; i < 3; i++) - m <<= 8; - for (i++; i > 0; m >>= 6) - t[--i] = soap_base64o[m & 0x3F]; - for (i = 3; i > n; i--) - t[i] = '='; - t[4] = '\0'; - } - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_base642s(struct soap *soap, const char *s, char *t, size_t l, int *n) -{ register int i, j, c; - register unsigned long m; - register const char *p; - if (!s || !*s) - { if (n) - *n = 0; - if (soap->error) - return NULL; - return SOAP_NON_NULL; - } - if (!t) - { l = (strlen(s) + 3) / 4 * 3; - t = (char*)soap_malloc(soap, l); - } - if (!t) - return NULL; - p = t; - if (n) - *n = 0; - for (;;) - { for (i = 0; i < SOAP_BLKLEN; i++) - { m = 0; - j = 0; - while (j < 4) - { c = *s++; - if (c == '=' || !c) - { i *= 3; - switch (j) - { case 2: - *t++ = (char)((m >> 4) & 0xFF); - i++; - break; - case 3: - *t++ = (char)((m >> 10) & 0xFF); - *t++ = (char)((m >> 2) & 0xFF); - i += 2; - } - if (n) - *n += i; - return p; - } - c -= '+'; - if (c >= 0 && c <= 79) - { int b = soap_base64i[c]; - if (b >= 64) - { soap->error = SOAP_TYPE; - return NULL; - } - m = (m << 6) + b; - j++; - } - else if (!soap_blank(c + '+')) - { soap->error = SOAP_TYPE; - return NULL; - } - } - *t++ = (char)((m >> 16) & 0xFF); - *t++ = (char)((m >> 8) & 0xFF); - *t++ = (char)(m & 0xFF); - if (l < 3) - { if (n) - *n += i; - return p; - } - l -= 3; - } - if (n) - *n += 3 * SOAP_BLKLEN; - } -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_s2hex(struct soap *soap, const unsigned char *s, char *t, int n) -{ register char *p; - if (!t) - t = (char*)soap_malloc(soap, 2 * n + 1); - if (!t) - return NULL; - p = t; - t[0] = '\0'; - if (s) - { for (; n > 0; n--) - { register int m = *s++; - *t++ = (char)((m >> 4) + (m > 159 ? 'a' - 10 : '0')); - m &= 0x0F; - *t++ = (char)(m + (m > 9 ? 'a' - 10 : '0')); - } - } - *t++ = '\0'; - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -SOAP_FMAC1 -const char* -SOAP_FMAC2 -soap_hex2s(struct soap *soap, const char *s, char *t, size_t l, int *n) -{ register const char *p; - if (!s || !*s) - { if (n) - *n = 0; - if (soap->error) - return NULL; - return SOAP_NON_NULL; - } - if (!t) - { l = strlen(s) / 2; - t = (char*)soap_malloc(soap, l); - } - if (!t) - return NULL; - p = t; - while (l) - { register int d1, d2; - d1 = *s++; - if (!d1) - break; - d2 = *s++; - if (!d2) - break; - *t++ = ((d1 >= 'A' ? (d1 & 0x7) + 9 : d1 - '0') << 4) + (d2 >= 'A' ? (d2 & 0x7) + 9 : d2 - '0'); - l--; - } - if (n) - *n = (int)(t - p); - return p; -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_puthttphdr(struct soap *soap, int status, size_t count) -{ if (soap->status != SOAP_GET) - { register const char *s = "text/xml; charset=utf-8"; - register int err = SOAP_OK; -#ifndef WITH_LEANER - register const char *r = NULL; -#endif - if ((status == SOAP_FILE || soap->status == SOAP_POST_FILE) && soap->http_content) - s = soap->http_content; - else if (status == SOAP_HTML) - s = "text/html; charset=utf-8"; - else if (count || ((soap->omode & SOAP_IO) == SOAP_IO_CHUNK)) - { if (soap->version == 2) - s = "application/soap+xml; charset=utf-8"; - } -#ifndef WITH_LEANER - if (soap->mode & (SOAP_ENC_DIME | SOAP_ENC_MTOM)) - { if (soap->mode & SOAP_ENC_MTOM) - { if (soap->version == 2) - r = "application/soap+xml"; - else - r = "text/xml"; - s = "application/xop+xml"; - } - else - s = "application/dime"; - } - if ((soap->mode & SOAP_ENC_MIME) && soap->mime.boundary && strlen(soap->mime.boundary) + strlen(soap->mime.start ? soap->mime.start : SOAP_STR_EOS) < sizeof(soap->tmpbuf) - 80) - { register const char *t = strchr(s, ';'); - sprintf(soap->tmpbuf, "multipart/related; charset=utf-8; boundary=\"%s\"; type=\"", soap->mime.boundary); - if (t) - { strncat(soap->tmpbuf, s, t - s); - soap->tmpbuf[sizeof(soap->tmpbuf)-1] = '\0'; - } - else - strcat(soap->tmpbuf, s); - if (soap->mime.start) - { strcat(soap->tmpbuf, "\"; start=\""); - strcat(soap->tmpbuf, soap->mime.start); - } - strcat(soap->tmpbuf, "\""); - if (r) - { strcat(soap->tmpbuf, "; start-info=\""); - strcat(soap->tmpbuf, r); - strcat(soap->tmpbuf, "\""); - } - s = soap->tmpbuf; - } -#endif - if (s && (err = soap->fposthdr(soap, "Content-Type", s))) - return err; -#ifdef WITH_ZLIB - if ((soap->omode & SOAP_ENC_ZLIB)) - { -#ifdef WITH_GZIP - err = soap->fposthdr(soap, "Content-Encoding", soap->zlib_out == SOAP_ZLIB_DEFLATE ? "deflate" : "gzip"); -#else - err = soap->fposthdr(soap, "Content-Encoding", "deflate"); -#endif - if (err) - return err; - } -#endif -#ifndef WITH_LEANER - if ((soap->omode & SOAP_IO) == SOAP_IO_CHUNK) - err = soap->fposthdr(soap, "Transfer-Encoding", "chunked"); - else -#endif - if (s) - { sprintf(soap->tmpbuf, "%lu", (unsigned long)count); - err = soap->fposthdr(soap, "Content-Length", soap->tmpbuf); - } - if (err) - return err; - } - return soap->fposthdr(soap, "Connection", soap->keep_alive ? "keep-alive" : "close"); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -static const char* -soap_set_validation_fault(struct soap *soap, const char *s, const char *t) -{ if (*soap->tag) - sprintf(soap->msgbuf, "Validation constraint violation: %s%s in element '%s'", s, t?t:SOAP_STR_EOS, soap->tag); - else - sprintf(soap->msgbuf, "Validation constraint violation: %s%s", s, t?t:SOAP_STR_EOS); - return soap->msgbuf; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_set_fault(struct soap *soap) -{ const char **c = soap_faultcode(soap); - const char **s = soap_faultstring(soap); - if (soap->fseterror) - soap->fseterror(soap, c, s); - if (!*c) - { if (soap->version == 2) - *c = "SOAP-ENV:Sender"; - else - *c = "SOAP-ENV:Client"; - } - if (*s) - return; - switch (soap->error) - { -#ifndef WITH_LEAN - case SOAP_CLI_FAULT: - *s = "Client fault"; - break; - case SOAP_SVR_FAULT: - *s = "Server fault"; - break; - case SOAP_TAG_MISMATCH: - *s = soap_set_validation_fault(soap, "tag name or namespace mismatch", NULL); - break; - case SOAP_TYPE: - *s = soap_set_validation_fault(soap, "data type mismatch ", soap->type); - break; - case SOAP_SYNTAX_ERROR: - *s = "Well-formedness violation"; - break; - case SOAP_NO_TAG: - *s = "No XML root element"; - break; - case SOAP_MUSTUNDERSTAND: - *c = "SOAP-ENV:MustUnderstand"; - sprintf(soap->msgbuf, "The data in element '%s' must be understood but cannot be handled", soap->tag); - *s = soap->msgbuf; - break; - case SOAP_VERSIONMISMATCH: - *c = "SOAP-ENV:VersionMismatch"; - *s = "Invalid SOAP message or SOAP version mismatch"; - break; - case SOAP_DATAENCODINGUNKNOWN: - *c = "SOAP-ENV:DataEncodingUnknown"; - *s = "Unsupported SOAP data encoding"; - break; - case SOAP_NAMESPACE: - *s = soap_set_validation_fault(soap, "namespace error", NULL); - break; - case SOAP_USER_ERROR: - *s = "User error"; - break; - case SOAP_FATAL_ERROR: - *s = "Fatal error"; - break; - case SOAP_NO_METHOD: - sprintf(soap->msgbuf, "Method '%s' not implemented: method name or namespace not recognized", soap->tag); - *s = soap->msgbuf; - break; - case SOAP_NO_DATA: - *s = "Data required for operation"; - break; - case SOAP_GET_METHOD: - *s = "HTTP GET method not implemented"; - break; - case SOAP_PUT_METHOD: - *s = "HTTP PUT method not implemented"; - break; - case SOAP_HEAD_METHOD: - *s = "HTTP HEAD method not implemented"; - break; - case SOAP_HTTP_METHOD: - *s = "HTTP method not implemented"; - break; - case SOAP_EOM: - *s = "Out of memory"; - break; - case SOAP_MOE: - *s = "Memory overflow or memory corruption error"; - break; - case SOAP_HDR: - *s = "Header line too long"; - break; - case SOAP_IOB: - *s = "Array index out of bounds"; - break; - case SOAP_NULL: - *s = soap_set_validation_fault(soap, "nil not allowed", NULL); - break; - case SOAP_DUPLICATE_ID: - *s = soap_set_validation_fault(soap, "multiple definitions of id ", soap->id); - if (soap->version == 2) - *soap_faultsubcode(soap) = "SOAP-ENC:DuplicateID"; - break; - case SOAP_MISSING_ID: - *s = soap_set_validation_fault(soap, "missing id for ref ", soap->id); - if (soap->version == 2) - *soap_faultsubcode(soap) = "SOAP-ENC:MissingID"; - break; - case SOAP_HREF: - *s = soap_set_validation_fault(soap, "incompatible object type ref/id pair ", soap->id); - break; - case SOAP_FAULT: - break; -#ifndef WITH_NOIO - case SOAP_UDP_ERROR: - *s = "Message too large for UDP packet"; - break; - case SOAP_TCP_ERROR: - *s = tcp_error(soap); - break; -#endif - case SOAP_HTTP_ERROR: - *s = "An HTTP processing error occurred"; - break; - case SOAP_SSL_ERROR: -#ifdef WITH_OPENSSL - *s = "SSL error"; -#else - *s = "OpenSSL not installed: recompile with -DWITH_OPENSSL"; -#endif - break; - case SOAP_PLUGIN_ERROR: - *s = "Plugin registry error"; - break; - case SOAP_DIME_ERROR: - *s = "DIME format error"; - break; - case SOAP_DIME_HREF: - *s = "DIME href to missing attachment"; - break; - case SOAP_DIME_MISMATCH: - *s = "DIME version/transmission error"; - break; - case SOAP_DIME_END: - *s = "End of DIME error"; - break; - case SOAP_MIME_ERROR: - *s = "MIME format error"; - break; - case SOAP_MIME_HREF: - *s = "MIME href to missing attachment"; - break; - case SOAP_MIME_END: - *s = "End of MIME error"; - break; - case SOAP_ZLIB_ERROR: -#ifdef WITH_ZLIB - sprintf(soap->msgbuf, "Zlib/gzip error: '%s'", soap->d_stream->msg?soap->d_stream->msg:SOAP_STR_EOS); - *s = soap->msgbuf; -#else - *s = "Zlib/gzip not installed for (de)compression: recompile with -DWITH_GZIP"; -#endif - break; - case SOAP_REQUIRED: - *s = soap_set_validation_fault(soap, "missing required attribute", NULL); - break; - case SOAP_PROHIBITED: - *s = soap_set_validation_fault(soap, "prohibited attribute present", NULL); - break; - case SOAP_OCCURS: - *s = soap_set_validation_fault(soap, "occurrence violation", NULL); - break; - case SOAP_LENGTH: - *s = soap_set_validation_fault(soap, "content range or length violation", NULL); - break; - case SOAP_FD_EXCEEDED: - *s = "Maximum number of open connections was reached (no define HAVE_POLL): increase FD_SETSIZE"; - break; - case SOAP_STOP: - *s = "Stopped: no response to be sent or received (informative)"; - break; -#endif - case SOAP_EOF: -#ifndef WITH_NOIO - strcpy(soap->msgbuf, soap_strerror(soap)); -#ifndef WITH_LEAN - if (strlen(soap->msgbuf) + 25 < sizeof(soap->msgbuf)) - { memmove(soap->msgbuf + 25, soap->msgbuf, strlen(soap->msgbuf) + 1); - memcpy(soap->msgbuf, "End of file or no input: ", 25); - } -#endif - *s = soap->msgbuf; - break; -#else - *s = "End of file or no input"; - break; -#endif - default: -#ifndef WITH_NOHTTP -#ifndef WITH_LEAN - if (soap->error > 200 && soap->error < 600) - { sprintf(soap->msgbuf, "HTTP Error: %d %s", soap->error, http_error(soap, soap->error)); - *s = soap->msgbuf; - } - else -#endif -#endif - { sprintf(soap->msgbuf, "Error %d", soap->error); - *s = soap->msgbuf; - } - } -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_send_fault(struct soap *soap) -{ register int status = soap->error; - if (status == SOAP_STOP) - return soap_closesock(soap); - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Sending back fault struct for error code %d\n", soap->error)); - soap->keep_alive = 0; /* to terminate connection */ - soap_set_fault(soap); - if (soap->error < 200 && soap->error != SOAP_FAULT) - soap->header = NULL; - if (status != SOAP_EOF || (!soap->recv_timeout && !soap->send_timeout)) - { int r = 1; -#ifndef WITH_NOIO - if (soap->fpoll && soap->fpoll(soap)) - r = 0; -#ifndef WITH_LEAN - else if (soap_valid_socket(soap->socket)) - { r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_SND, 0); - if (r > 0) - { if (!(r & SOAP_TCP_SELECT_SND) - || ((r & SOAP_TCP_SELECT_RCV) - && recv(soap->socket, soap->tmpbuf, 1, MSG_PEEK) < 0)) - r = 0; - } - } -#endif -#endif - if (r > 0) - { soap->error = SOAP_OK; - soap_serializeheader(soap); - soap_serializefault(soap); - soap_begin_count(soap); - if (soap->mode & SOAP_IO_LENGTH) - { soap_envelope_begin_out(soap); - soap_putheader(soap); - soap_body_begin_out(soap); - soap_putfault(soap); - soap_body_end_out(soap); - soap_envelope_end_out(soap); - } - soap_end_count(soap); - if (soap_response(soap, status) - || soap_envelope_begin_out(soap) - || soap_putheader(soap) - || soap_body_begin_out(soap) - || soap_putfault(soap) - || soap_body_end_out(soap) - || soap_envelope_end_out(soap)) - return soap_closesock(soap); - soap_end_send(soap); - } - } - soap->error = status; - return soap_closesock(soap); -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_recv_fault(struct soap *soap, int check) -{ register int status = soap->error; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Check if receiving SOAP Fault\n")); - if (!check) - { /* try getfault when no tag or tag mismatched at level 2, otherwise ret */ - if (soap->error != SOAP_NO_TAG - && (soap->error != SOAP_TAG_MISMATCH || soap->level != 2)) - return soap->error; - } - soap->error = SOAP_OK; - if (soap_getfault(soap)) - { /* check flag set: check if SOAP Fault is present, if not just return */ - if (check && soap->error == SOAP_TAG_MISMATCH && soap->level == 2) - return soap->error = SOAP_OK; - DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Error: soap_get_soapfault() failed. Is this a SOAP message at all?\n")); - *soap_faultcode(soap) = (soap->version == 2 ? "SOAP-ENV:Sender" : "SOAP-ENV:Client"); - soap->error = status; - soap_set_fault(soap); - } - else - { register const char *s = *soap_faultcode(soap); - if (!soap_match_tag(soap, s, "SOAP-ENV:Server") || !soap_match_tag(soap, s, "SOAP-ENV:Receiver")) - status = SOAP_SVR_FAULT; - else if (!soap_match_tag(soap, s, "SOAP-ENV:Client") || !soap_match_tag(soap, s, "SOAP-ENV:Sender")) - status = SOAP_CLI_FAULT; - else if (!soap_match_tag(soap, s, "SOAP-ENV:MustUnderstand")) - status = SOAP_MUSTUNDERSTAND; - else if (!soap_match_tag(soap, s, "SOAP-ENV:VersionMismatch")) - status = SOAP_VERSIONMISMATCH; - else - { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Received SOAP Fault code %s\n", s)); - status = SOAP_FAULT; - } - if (!soap_body_end_in(soap)) - soap_envelope_end_in(soap); - } - soap_end_recv(soap); - soap->error = status; - return soap_closesock(soap); -} -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_send_empty_response(struct soap *soap, int httpstatuscode) -{ register soap_mode m = soap->omode; - soap->count = 0; - if ((m & SOAP_IO) == SOAP_IO_CHUNK) - soap->omode = (m & ~SOAP_IO) | SOAP_IO_BUFFER; - if (soap_response(soap, httpstatuscode) || soap_end_send(soap)) - { soap->omode = m; - return soap_closesock(soap); - } - soap->omode = m; - return soap->error = SOAP_STOP; /* stops the server's response */ -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOHTTP -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_recv_empty_response(struct soap *soap) -{ if (!soap_begin_recv(soap)) - soap_end_recv(soap); - else if (soap->error == SOAP_NO_DATA || soap->error == 202) - soap->error = SOAP_OK; - return soap_closesock(soap); -} -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_NOIO -#ifndef PALM_1 -static const char* -soap_strerror(struct soap *soap) -{ register int err = soap->errnum; - if (err) - { -#ifndef WIN32 - return strerror(err); -#else -#ifndef UNDER_CE - DWORD len; - *soap->msgbuf = '\0'; - len = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)soap->msgbuf, (DWORD)sizeof(soap->msgbuf), NULL); -#else - DWORD i, len; - *soap->msgbuf = '\0'; - len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, 0, (LPTSTR)soap->msgbuf, (DWORD)(sizeof(soap->msgbuf)/sizeof(TCHAR)), NULL); - for (i = 0; i <= len; i++) - { if (((TCHAR*)soap->msgbuf)[i] < 0x80) - soap->msgbuf[i] = (char)((TCHAR*)soap->msgbuf)[i]; - else - soap->msgbuf[i] = '?'; - } -#endif -#endif - } - else - { char *s = soap->msgbuf; -#ifndef WITH_LEAN - int rt = soap->recv_timeout, st = soap->send_timeout; - int ru = ' ', su = ' '; -#endif - strcpy(s, "Operation interrupted or timed out"); -#ifndef WITH_LEAN - if (rt < 0) - { rt = -rt; - ru = 'u'; - } - if (st < 0) - { st = -st; - su = 'u'; - } - if (rt) - sprintf(s + strlen(s), " (%d%cs receive delay)", rt, ru); - if (st) - sprintf(s + strlen(s), " (%d%cs send delay)", st, su); -#endif - } - return soap->msgbuf; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_2 -static int -soap_set_error(struct soap *soap, const char *faultcode, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML, int soaperror) -{ *soap_faultcode(soap) = faultcode; - if (faultsubcodeQName) - *soap_faultsubcode(soap) = faultsubcodeQName; - *soap_faultstring(soap) = faultstring; - if (faultdetailXML && *faultdetailXML) - { register const char **s = soap_faultdetail(soap); - if (s) - *s = faultdetailXML; - } - return soap->error = soaperror; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_sender_error(struct soap *soap, const char *faultstring, const char *faultdetailXML, int soaperror) -{ return soap_set_error(soap, soap->version == 2 ? "SOAP-ENV:Sender" : "SOAP-ENV:Client", NULL, faultstring, faultdetailXML, soaperror); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_set_receiver_error(struct soap *soap, const char *faultstring, const char *faultdetailXML, int soaperror) -{ return soap_set_error(soap, soap->version == 2 ? "SOAP-ENV:Receiver" : "SOAP-ENV:Server", NULL, faultstring, faultdetailXML, soaperror); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -static int -soap_copy_fault(struct soap *soap, const char *faultcode, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML) -{ char *r = NULL, *s = NULL, *t = NULL; - if (faultsubcodeQName) - r = soap_strdup(soap, faultsubcodeQName); - if (faultstring) - s = soap_strdup(soap, faultstring); - if (faultdetailXML) - t = soap_strdup(soap, faultdetailXML); - return soap_set_error(soap, faultcode, r, s, t, SOAP_FAULT); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_sender_fault(struct soap *soap, const char *faultstring, const char *faultdetailXML) -{ return soap_sender_fault_subcode(soap, NULL, faultstring, faultdetailXML); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_sender_fault_subcode(struct soap *soap, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML) -{ return soap_copy_fault(soap, soap->version == 2 ? "SOAP-ENV:Sender" : "SOAP-ENV:Client", faultsubcodeQName, faultstring, faultdetailXML); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_receiver_fault(struct soap *soap, const char *faultstring, const char *faultdetailXML) -{ return soap_receiver_fault_subcode(soap, NULL, faultstring, faultdetailXML); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_receiver_fault_subcode(struct soap *soap, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML) -{ return soap_copy_fault(soap, soap->version == 2 ? "SOAP-ENV:Receiver" : "SOAP-ENV:Server", faultsubcodeQName, faultstring, faultdetailXML); -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -#ifndef WITH_NOSTDLIB -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_print_fault(struct soap *soap, FILE *fd) -{ if (soap_check_state(soap)) - fprintf(fd, "Error: soap struct state not initialized\n"); - else if (soap->error) - { const char *c, *v = NULL, *s, **d; - d = soap_faultcode(soap); - if (!*d) - soap_set_fault(soap); - c = *d; - if (soap->version == 2) - v = *soap_faultsubcode(soap); - s = *soap_faultstring(soap); - d = soap_faultdetail(soap); - fprintf(fd, "%s%d fault: %s [%s]\n\"%s\"\nDetail: %s\n", soap->version ? "SOAP 1." : "Error ", soap->version ? (int)soap->version : soap->error, c, v ? v : "no subcode", s ? s : "[no reason]", d && *d ? *d : "[no detail]"); - } -} -#endif -#endif - -/******************************************************************************/ -#ifdef __cplusplus -#ifndef WITH_LEAN -#ifndef WITH_NOSTDLIB -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_stream_fault(struct soap *soap, std::ostream& os) -{ if (soap_check_state(soap)) - os << "Error: soap struct state not initialized\n"; - else if (soap->error) - { const char *c, *v = NULL, *s, **d; - d = soap_faultcode(soap); - if (!*d) - soap_set_fault(soap); - c = *d; - if (soap->version == 2) - v = *soap_faultsubcode(soap); - s = *soap_faultstring(soap); - d = soap_faultdetail(soap); - os << (soap->version ? "SOAP 1." : "Error ") - << (soap->version ? (int)soap->version : soap->error) - << " fault: " << c - << "[" << (v ? v : "no subcode") << "]" - << std::endl - << "\"" << (s ? s : "[no reason]") << "\"" - << std::endl - << "Detail: " << (d && *d ? *d : "[no detail]") - << std::endl; - } -} -#endif -#endif -#endif - -/******************************************************************************/ -#ifndef WITH_LEAN -#ifndef WITH_NOSTDLIB -SOAP_FMAC1 -char* -SOAP_FMAC2 -soap_sprint_fault(struct soap *soap, char *buf, size_t len) -{ if (soap_check_state(soap)) - strncpy(buf, "Error: soap struct not initialized", len); - else if (soap->error) - { const char *c, *v = NULL, *s, **d; - d = soap_faultcode(soap); - if (!*d) - soap_set_fault(soap); - c = *d; - if (soap->version == 2) - v = *soap_faultsubcode(soap); - s = *soap_faultstring(soap); - d = soap_faultdetail(soap); -#ifdef HAVE_SNPRINTF -# ifdef WIN32 - _snprintf -# else - snprintf -# endif - (buf, len, "%s%d fault: %s [%s]\n\"%s\"\nDetail: %s\n", soap->version ? "SOAP 1." : "Error ", soap->version ? (int)soap->version : soap->error, c, v ? v : "no subcode", s ? s : "[no reason]", d && *d ? *d : "[no detail]"); -#else - if (len > 40 + (v ? strlen(v) : 0) + (s ? strlen(s) : 0) + (d && *d ? strlen(*d) : 0)) - sprintf(buf, "%s%d fault: %s [%s]\n\"%s\"\nDetail: %s\n", soap->version ? "SOAP 1." : "Error ", soap->version ? (int)soap->version : soap->error, c, v ? v : "no subcode", s ? s : "[no reason]", d && *d ? *d : "[no detail]"); - else if (len > 40) - sprintf(buf, "%s%d fault: %s\n", soap->version ? "SOAP 1." : "Error ", soap->version ? (int)soap->version : soap->error, c); - else - buf[0] = '\0'; -#endif - } - return buf; -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -#ifndef WITH_NOSTDLIB -SOAP_FMAC1 -void -SOAP_FMAC2 -soap_print_fault_location(struct soap *soap, FILE *fd) -{ -#ifndef WITH_LEAN - int i, j, c1, c2; - if (soap->error && soap->error != SOAP_STOP && soap->bufidx <= soap->buflen && soap->buflen > 0 && soap->buflen <= SOAP_BUFLEN) - { i = (int)soap->bufidx - 1; - if (i <= 0) - i = 0; - c1 = soap->buf[i]; - soap->buf[i] = '\0'; - if ((int)soap->buflen >= i + 1024) - j = i + 1023; - else - j = (int)soap->buflen - 1; - c2 = soap->buf[j]; - soap->buf[j] = '\0'; - fprintf(fd, "%s%c\n\n", soap->buf, c1); - if (soap->bufidx < soap->buflen) - fprintf(fd, "%s\n", soap->buf + soap->bufidx); - soap->buf[i] = c1; - soap->buf[j] = c2; - } -#endif -} -#endif -#endif - -/******************************************************************************/ -#ifndef PALM_1 -SOAP_FMAC1 -int -SOAP_FMAC2 -soap_register_plugin_arg(struct soap *soap, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void *arg) -{ register struct soap_plugin *p; - register int r; - if (!(p = (struct soap_plugin*)SOAP_MALLOC(soap, sizeof(struct soap_plugin)))) - return soap->error = SOAP_EOM; - p->id = NULL; - p->data = NULL; - p->fcopy = NULL; - p->fdelete = NULL; - r = fcreate(soap, p, arg); - if (!r && p->fdelete) - { p->next = soap->plugins; - soap->plugins = p; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Registered '%s' plugin\n", p->id)); - return SOAP_OK; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not register plugin '%s': plugin returned error %d (or fdelete callback not set)\n", p->id?p->id:"?", r)); - SOAP_FREE(soap, p); - return r; -} -#endif - -/******************************************************************************/ -#ifndef PALM_1 -static void * -fplugin(struct soap *soap, const char *id) -{ register struct soap_plugin *p; - for (p = soap->plugins; p; p = p->next) - if (p->id == id || !strcmp(p->id, id)) - return p->data; - return NULL; -} -#endif - -/******************************************************************************/ -#ifndef PALM_2 -SOAP_FMAC1 -void * -SOAP_FMAC2 -soap_lookup_plugin(struct soap *soap, const char *id) -{ return soap->fplugin(soap, id); -} -#endif - -/******************************************************************************/ -#ifdef __cplusplus -} -#endif - -/******************************************************************************\ - * - * C++ soap struct methods - * -\******************************************************************************/ - -#ifdef __cplusplus -soap::soap() -{ soap_init(this); -} -#endif - -/******************************************************************************/ -#ifdef __cplusplus -soap::soap(soap_mode m) -{ soap_init1(this, m); -} -#endif - -/******************************************************************************/ -#ifdef __cplusplus -soap::soap(soap_mode im, soap_mode om) -{ soap_init2(this, im, om); -} -#endif - -/******************************************************************************/ -#ifdef __cplusplus -soap::soap(const struct soap& soap) -{ soap_copy_context(this, &soap); -} -#endif - -/******************************************************************************/ -#ifdef __cplusplus -soap::~soap() -{ soap_destroy(this); - soap_end(this); - soap_done(this); -} -#endif - -/******************************************************************************/ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SOAP/stdsoap2.h --- a/usr/src/lib/libkmsagent/common/SOAP/stdsoap2.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2444 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/* - stdsoap2.h 2.7.17 - - gSOAP runtime engine - -gSOAP XML Web services tools -Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved. -This part of the software is released under ONE of the following licenses: -GPL, or the gSOAP public license, or Genivia's license for commercial use. --------------------------------------------------------------------------------- -Contributors: - -Wind River Systems, Inc., for the following additions - - vxWorks compatible --------------------------------------------------------------------------------- -gSOAP public license. - -The contents of this file are subject to the gSOAP Public License Version 1.3 -(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.cs.fsu.edu/~engelen/soaplicense.html -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the License. - -The Initial Developer of the Original Code is Robert A. van Engelen. -Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc., All Rights Reserved. --------------------------------------------------------------------------------- -GPL license. - -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. - -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License along with -this program; if not, write to the Free Software Foundation, Inc., 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA - -Author contact information: -engelen@genivia.com / engelen@acm.org - -This program is released under the GPL with the additional exemption that -compiling, linking, and/or using OpenSSL is allowed. --------------------------------------------------------------------------------- -A commercial use license is available from Genivia, Inc., contact@genivia.com --------------------------------------------------------------------------------- -*/ - -#ifdef WITH_SOAPDEFS_H -# include "soapdefs.h" /* include user-defined stuff */ -#endif - -#ifndef _THREAD_SAFE -# define _THREAD_SAFE -#endif - -#ifndef OPENSERVER -# ifndef _REENTRANT -# define _REENTRANT -# endif -#endif - -#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */ -# define SOAP_FMAC1 -#endif - -#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */ -# define SOAP_FMAC2 -#endif - -#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */ -# define SOAP_FMAC3 -#endif - -#ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */ -# define SOAP_FMAC3S SOAP_FMAC3 -#endif - -#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */ -# define SOAP_FMAC4 -#endif - -#ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */ -# define SOAP_FMAC4S SOAP_FMAC4 -#endif - -#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */ -# define SOAP_FMAC5 -#endif - -#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */ -# define SOAP_FMAC6 -#endif - -#ifndef SOAP_CMAC /* class declaration macro */ -# define SOAP_CMAC -#endif - -#ifndef SOAP_NMAC /* namespace table declaration macro */ -# define SOAP_NMAC -#endif - -#ifndef SOAP_SOURCE_STAMP -# define SOAP_SOURCE_STAMP(str) -#endif - -/* gSOAP 2.7.4 and higher: fast look-aside buffering is stable */ -#ifndef WITH_FAST -# define WITH_FAST -#endif - -/* gSOAP 2.7.15 and higher: always retain CDATA in literal XML, unless WITH_LEAN or WITH_NOCDATA */ -#ifndef WITH_LEAN -# ifndef WITH_NOCDATA -# ifndef WITH_CDATA -# define WITH_CDATA -# endif -# endif -#endif - -#ifdef WITH_LEANER -# ifndef WITH_LEAN -# define WITH_LEAN -# endif -#endif - -#ifdef WITH_LEAN -# ifdef WITH_COOKIES -# error "Cannot build WITH_LEAN code WITH_COOKIES enabled" -# endif -#endif - -#ifndef STDSOAP_H -#define STDSOAP_H - -#if defined(__vxworks) || defined(__VXWORKS__) -# ifndef VXWORKS -# define VXWORKS -# endif -#endif - -#ifdef _WIN32 -# ifndef WIN32 -# define WIN32 -# endif -#endif - -#ifdef _WIN32_WCE -# ifndef UNDER_CE -# define UNDER_CE _WIN32_WCE -# endif -#endif - -#ifdef UNDER_CE -# ifndef WIN32 -# define WIN32 -# endif -#endif - -#ifdef __BORLANDC__ -# ifdef __WIN32__ -# ifndef WIN32 -# define WIN32 -# endif -# endif -#endif - -#ifdef __CYGWIN__ -# ifndef CYGWIN -# define CYGWIN -# endif -#endif - -#ifdef __SYMBIAN32__ -# define SYMBIAN -# undef WIN32 -#endif - -#if defined(__palmos__) || defined(PALM_GCC) || defined(__PALMOS_TRAPS__) -# ifndef PALM -# define PALM -# endif -#endif - -#if defined(__hpux) -# ifndef HP_UX -# define HP_UX -# endif -#endif - -#if defined(__digital__) && defined(__unix__) -# ifndef TRU64 -# define TRU64 -# endif -#endif - -#ifdef __MVS__ -# ifndef OS390 -# define OS390 -# endif -#endif - -#ifdef HAVE_CONFIG_H -# include "config.h" -# if defined(WITH_OPENSSL) -# ifndef HAVE_OPENSSL_SSL_H -# undef WITH_OPENSSL -# endif -# endif -# if defined(WITH_ZLIB) || defined(WITH_GZIP) -# ifndef HAVE_ZLIB_H -# undef WITH_ZLIB -# undef WITH_GZIP -# endif -# endif -#else -# if defined(UNDER_CE) -# define WITH_LEAN -# define HAVE_SSCANF -# elif defined(WIN32) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_GMTIME -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# define SOAP_LONG_FORMAT "%I64d" -# define SOAP_ULONG_FORMAT "%I64u" -# elif defined(CYGWIN) -# define HAVE_POLL -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(__APPLE__) -# define HAVE_POLL -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOD_L -# define HAVE_SSCANF_L -# define HAVE_SPRINTF_L -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_TIMEGM -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(_AIX43) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(_AIX41) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(HP_UX) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) -# define HAVE_POLL -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOD_L -# define HAVE_SSCANF_L -# define HAVE_SPRINTF_L -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_STRTOLL -# define HAVE_STRTOULL -# define HAVE_GETTIMEOFDAY -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# define SOAP_LONG_FORMAT "%qd" -# define SOAP_ULONG_FORMAT "%qu" -# elif defined(__VMS) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(__GLIBC__) || defined(__GNU__) -# define HAVE_POLL -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOD_L -# define HAVE_SSCANF_L -# define HAVE_SPRINTF_L -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_STRTOLL -# define HAVE_STRTOULL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_TIMEGM -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# define HAVE_ISNAN -# elif defined(TRU64) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_GETTIMEOFDAY -# define HAVE_SYS_TIMEB_H -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define __USE_STD_IOSTREAM -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# define SOAP_LONG_FORMAT "%ld" -# define SOAP_ULONG_FORMAT "%lu" -# elif defined(MAC_CARBON) -# define WITH_NOIO -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOD_L -# define HAVE_SSCANF_L -# define HAVE_SPRINTF_L -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GETHOSTBYNAME_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(PALM) -# define WITH_LEAN -# define HAVE_STRTOD /* strtod() is defined in palmFunctions.h */ -# include /* Needs to be included before unix headers */ -# include -# define IGNORE_STDIO_STUBS -# include -# define O_NONBLOCK FNONBIO -# include -# include "palmFunctions.h" -# elif defined(SYMBIAN) -# define WITH_LEAN -# define WITH_NONAMESPACES -# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */ -# include -# include -# elif defined(VXWORKS) -# ifdef _WRS_KERNEL -# define _POSIX_THREADS 1 -# endif -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_GMTIME -# define HAVE_LOCALTIME -# define HAVE_MKTIME -# elif defined(OS390) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(AS400) -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# elif defined(__QNX__) || defined(QNX) -/* QNX does not have a working version of strtof */ -# undef HAVE_STRTOF -# define HAVE_POLL -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GETHOSTBYNAME_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# define LONG64 long -# define ULONG64 unsigned LONG64 -# define SOAP_LONG_FORMAT "%ld" -# define SOAP_ULONG_FORMAT "%lu" -# else -/* Default assumptions for supported functions */ -# define HAVE_SNPRINTF -# define HAVE_STRRCHR -# define HAVE_STRTOD -# define HAVE_SSCANF -# define HAVE_STRTOL -# define HAVE_STRTOUL -# define HAVE_SYS_TIMEB_H -# define HAVE_FTIME -# define HAVE_RAND_R -# define HAVE_GETHOSTBYNAME_R -# define HAVE_GMTIME_R -# define HAVE_LOCALTIME_R -# ifdef MB_LEN_MAX -# define HAVE_WCTOMB -# define HAVE_MBTOWC -# endif -# endif -#endif - -/* native Win and HP-UX compilers don't like empty structs */ -#if defined(WIN32) || defined(HP_UX) || defined(_AIX41) || defined(_AIX43) || defined(VXWORKS) -# define WITH_NOEMPTYSTRUCT -#endif - -#ifdef HP_UX -# undef HAVE_STRTOLL -# undef HAVE_STRTOULL -#endif - -/* older OpenVMS TCP/IP stacks cannot handle 65536 bytes */ -#ifdef __VMS -# ifndef SOAP_BUFLEN -# define SOAP_BUFLEN (65535) -# endif -#endif - -#ifdef WITH_C_LOCALE -# include -#else -# undef HAVE_STRTOF_L -# undef HAVE_STRTOD_L -# undef HAVE_SSCANF_L -# undef HAVE_SPRINTF_L -#endif - -#ifndef WITH_NOSTDLIB -# include -# ifndef PALM -# include -# include -# endif -# include -# include -#endif - -#ifdef HAVE_POLL -# include -#endif - -#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) -# include -# include -#endif - -#ifdef WITH_NOHTTP -# ifndef WITH_NOIO -# define WITH_NOIO -# undef WITH_COOKIES -# endif -#endif - -/* Suggestion when SOAP_FD_EXCEEDED error occurs: - Some systems allow increasing FD_SETSIZE before including sys/types.h: -#define FD_SETSIZE (2048) -*/ - -#ifndef UNDER_CE -# ifndef PALM -# ifndef WITH_NOIO -# include -# include -# endif -# ifndef WITH_LEAN -# ifdef HAVE_SYS_TIMEB_H -# include /* for ftime() */ -# endif -# include -# endif -# endif -#endif - -#ifdef OPENSERVER -# include -# include -# include - extern int h_errno; -#endif - -#ifndef WITH_NOIO -# ifndef WIN32 -# ifndef PALM -# include -# ifdef VXWORKS -# include -# include -# ifndef _WRS_KERNEL -# include -# endif -# else -# ifndef SYMBIAN -# include -# endif -# endif -# ifdef SUN_OS -# include /* SUN */ -# include /* SUN < 2.8 (?) */ -# endif -# ifdef VXWORKS -# ifdef _WRS_KERNEL -# include -# endif -# else -# include -# endif -# include -# ifdef OS390 -# include -# else -# include /* TCP_NODELAY */ -# endif -# include -# endif -# endif -#endif - -#ifdef WIN32 -# define SOAP_WINSOCKINT int -#else -# define SOAP_WINSOCKINT size_t -#endif - -#ifdef WIN32 -# ifndef UNDER_CE -# include -# include -# endif -# ifdef WITH_IPV6 -# include /* Visual Studio 2005 users: you must install the Platform SDK (R2) */ -# include -# include -# define SOAP_GAI_STRERROR gai_strerrorA -# else -# ifndef __BORLANDC__ -# include /* Visual Studio 2005 users: you must install the Platform SDK (R2) */ -/* # include */ /* Alternative: use winsock2 (not available with eVC), enable this line and comment out the line above */ -# else -# include /* Borland C */ -# endif -# endif -#else -# ifdef VXWORKS -# include -# include -# include -# endif -# ifndef WITH_NOIO -# ifndef PALM -# include -# include -# include -# include -# ifdef _AIX41 -# include -# endif -# endif -# endif -#endif - -#ifdef WITH_FASTCGI -# include -#endif - -#ifdef WITH_OPENSSL -# define OPENSSL_NO_KRB5 -# include -# include -# include -# include -# include -# ifndef ALLOW_OLD_VERSIONS -# if (OPENSSL_VERSION_NUMBER < 0x00905100L) -# error "Must use OpenSSL 0.9.6 or later" -# endif -# endif -#endif - -#ifdef WITH_GNUTLS -# include -#endif - -#ifdef WITH_GZIP -# ifndef WITH_ZLIB -# define WITH_ZLIB -# endif -#endif - -#ifdef WITH_CASEINSENSITIVETAGS -# define SOAP_STRCMP soap_tag_cmp /* case insensitve XML element/attribute names */ -#else -# define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */ -#endif - -#ifdef WITH_ZLIB -# include -#endif - -#ifndef WITH_NOSTDLIB -# ifndef PALM -# include /* for isnan() */ -# endif -#endif - -/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and messages (in file TEST.log) */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Portability: define SOAP_SOCKLEN_T */ -#if defined(_AIX) -# if defined(_AIX43) -# define SOAP_SOCKLEN_T socklen_t -# else -# define SOAP_SOCKLEN_T int -# endif -#elif defined(SOCKLEN_T) -# define SOAP_SOCKLEN_T SOCKLEN_T -#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) || defined(__QNX__) || defined(QNX) || defined(OS390) || defined(HP_UX) -# define SOAP_SOCKLEN_T socklen_t -#elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS) -# define SOAP_SOCKLEN_T int -#else -# define SOAP_SOCKLEN_T size_t -#endif - -#ifndef SOAP_SOCKET -# ifdef WIN32 -# define SOAP_SOCKET SOCKET -# define soap_closesocket(n) closesocket(n) -# else -# define SOAP_SOCKET int -# define soap_closesocket(n) close(n) -# endif -#endif - -#define SOAP_INVALID_SOCKET ((SOAP_SOCKET)-1) -#define soap_valid_socket(n) ((n) != SOAP_INVALID_SOCKET) - -#ifndef SOAP_GAI_STRERROR -# define SOAP_GAI_STRERROR gai_strerror -#endif - -#ifndef FD_SETSIZE -# define FD_SETSIZE (1024) -#endif - -#if defined(SYMBIAN) -# define LONG64 long -# define ULONG64 unsigned LONG64 -#elif !defined(WIN32) || defined(CYGWIN) || defined(__GLIBC__) || defined(__GNU__) -# ifndef LONG64 -# if defined(HAVE_STDINT_H) -# include -# define LONG64 int64_t -# define ULONG64 uint64_t -# elif defined(__GLIBC__) -# include -# if (__WORDSIZE == 64) -# define LONG64 int64_t -# define ULONG64 uint64_t -# ifndef SOAP_LONG_FORMAT -# define SOAP_LONG_FORMAT "%ld" -# endif -# ifndef SOAP_ULONG_FORMAT -# define SOAP_ULONG_FORMAT "%lu" -# endif -# else -# define LONG64 long long -# define ULONG64 unsigned LONG64 -# endif -# else -# define LONG64 long long -# define ULONG64 unsigned LONG64 -# endif -# endif -#elif defined(UNDER_CE) -# define LONG64 __int64 -# define ULONG64 unsigned LONG64 -#elif defined(__BORLANDC__) -# define LONG64 __int64 -# define ULONG64 unsigned LONG64 -#endif - -#ifndef SOAP_LONG_FORMAT -# define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit ints */ -#endif - -#ifndef SOAP_ULONG_FORMAT -# define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit ints */ -#endif - -#if defined(WIN32) && !defined(CYGWIN) -# define soap_int32 __int32 -#elif defined(SYMBIAN) -# define soap_int32 long -#elif defined(PALM) -# define soap_int32 Int32 -#elif defined(_AIX) -# define SOAP_NEW(type) new type /* AIX compilers don't like new (t) */ -# if defined(_AIX43) -# define soap_int32 int32_t -# else -# define soap_int32 signed int -# endif -#else -# define soap_int32 int32_t -#endif - -#ifdef WIN32 -# define SOAP_ERANGE ERANGE -# define SOAP_EINTR WSAEINTR -# define SOAP_EAGAIN WSAEWOULDBLOCK -# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK -# define SOAP_EINPROGRESS WSAEINPROGRESS -# define SOAP_EADDRINUSE WSAEADDRINUSE -#else -# define SOAP_ERANGE ERANGE -# define SOAP_EINTR EINTR -# define SOAP_EAGAIN EAGAIN -# define SOAP_EADDRINUSE EADDRINUSE -# ifdef SYMBIAN -# define SOAP_EWOULDBLOCK 9898 -# define SOAP_EINPROGRESS 9899 -# else -# define SOAP_EWOULDBLOCK EWOULDBLOCK -# define SOAP_EINPROGRESS EINPROGRESS -# endif -#endif - -#ifdef WIN32 -# ifdef UNDER_CE -# define soap_errno GetLastError() -# define soap_socket_errno(s) GetLastError() -# define soap_reset_errno SetLastError(0) -# else -# define soap_errno GetLastError() -# define soap_socket_errno(s) WSAGetLastError() -# define soap_reset_errno SetLastError(0) -# endif -#else -# ifndef WITH_NOIO -# define soap_errno errno -# define soap_socket_errno(s) errno -# define soap_reset_errno (errno = 0) -# else -# define soap_errno 0 -# define soap_socket_errno(s) 0 -# define soap_reset_errno -# endif -#endif - -#ifndef SOAP_BUFLEN -# if !defined(WITH_LEAN) -# define SOAP_BUFLEN (65536) /* buffer length for socket packets, also used by gethostbyname_r and UDP messages, so don't make this too small */ -# else -# define SOAP_BUFLEN (2048) /* lean size */ -# endif -#endif -#ifndef SOAP_LABLEN -# define SOAP_LABLEN (256) /* initial look-aside buffer length */ -#endif -#ifndef SOAP_PTRBLK -# define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */ -#endif -#ifndef SOAP_PTRHASH -# ifndef WITH_LEAN -# define SOAP_PTRHASH (1024) /* size of pointer analysis hash table (must be power of 2) */ -# else -# define SOAP_PTRHASH (32) -# endif -#endif -#ifndef SOAP_IDHASH -# ifndef WITH_LEAN -# define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */ -# else -# define SOAP_IDHASH (19) /* 19, 199 */ -# endif -#endif -#ifndef SOAP_BLKLEN -# ifndef WITH_LEAN -# define SOAP_BLKLEN (256) /* size of blocks to collect long strings and XML attributes */ -# else -# define SOAP_BLKLEN (32) -# endif -#endif -#ifndef SOAP_TAGLEN -# ifndef WITH_LEAN -# define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */ -# else -# define SOAP_TAGLEN (64) -# endif -#endif -#ifndef SOAP_HDRLEN -# ifndef WITH_LEAN -# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >4096 to read cookies) */ -# else -# define SOAP_HDRLEN (1024) -# endif -#endif -#ifndef SOAP_MAXDIMS -# ifndef WITH_LEAN -# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */ -# else -# define SOAP_MAXDIMS (4) -# endif -#endif - -#ifndef SOAP_MAXLOGS -# define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */ -# define SOAP_INDEX_RECV (0) -# define SOAP_INDEX_SENT (1) -# define SOAP_INDEX_TEST (2) -#endif - -/* Max iterations in soap_serve() to keep server connection alive */ -#ifndef SOAP_MAXKEEPALIVE -# define SOAP_MAXKEEPALIVE (100) -#endif - -/* Trusted max size of inbound SOAP array for compound array allocation. - Increase if necessary to allow larger arrays. -*/ -#ifndef SOAP_MAXARRAYSIZE -# define SOAP_MAXARRAYSIZE (1000000) -#endif - -#ifdef VXWORKS -# ifdef WMW_RPM_IO -# include "httpLib.h" -# endif -# ifdef __INCmathh -# include -# ifndef HAVE_ISNAN -# define HAVE_ISNAN -# endif -# ifndef soap_isnan -# define soap_isnan(num) isNan(num) -# endif -# endif -# ifdef WM_SECURE_KEY_STORAGE -# include -# endif -#endif - -#ifdef WIN32 -# include -# ifndef HAVE_ISNAN -# define HAVE_ISNAN -# endif -# define soap_isnan(num) _isnan(num) -#endif - -#ifdef SUN_OS -# define HAVE_ISNAN -#endif - -#ifdef __APPLE__ -# ifdef __cplusplus -# ifndef isnan -extern "C" int isnan(double); -# endif -# endif -# define HAVE_ISNAN -#endif - -#if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED)) -# define HAVE_ISNAN -#endif - -extern const struct soap_double_nan { unsigned int n1, n2; } soap_double_nan; - -#ifdef VXWORKS -# ifndef FLT_MAX -# define FLT_MAX _ARCH_FLT_MAX -# endif -# ifndef DBL_MAX -# define DBL_MAX _ARCH_DBL_MAX -# endif -#endif - -#ifndef FLT_NAN -# define FLT_NAN (*(float*)(void*)&soap_double_nan) -#endif - -#ifndef FLT_PINFTY -# if defined(FLT_MAX) -# define FLT_PINFTY FLT_MAX -# elif defined(HUGE_VALF) -# define FLT_PINFTY (float)HUGE_VALF -# elif defined(HUGE_VAL) -# define FLT_PINFTY (float)HUGE_VAL -# elif defined(FLOAT_MAX) -# define FLT_PINFTY FLOAT_MAX -# else -# define FLT_PINFTY (3.40282347e+38F) -# endif -#endif - -#ifndef FLT_NINFTY -# define FLT_NINFTY (-FLT_PINFTY) -#endif - -#ifndef DBL_NAN -# define DBL_NAN (*(double*)(void*)&soap_double_nan) -#endif - -#ifndef DBL_PINFTY -# if defined(DBL_MAX) -# define DBL_PINFTY DBL_MAX -# elif defined(HUGE_VALF) -# define DBL_PINFTY (double)HUGE_VALF -# elif defined(HUGE_VAL) -# define DBL_PINFTY (double)HUGE_VAL -# elif defined(DOUBLE_MAX) -# define DBL_PINFTY DOUBLE_MAX -# else -# define DBL_PINFTY (1.7976931348623157e+308) -# endif -#endif - -#ifndef DBL_NINFTY -# define DBL_NINFTY (-DBL_PINFTY) -#endif - -#ifndef soap_isnan -# ifdef HAVE_ISNAN -# define soap_isnan(n) isnan(n) -# else -# define soap_isnan(n) (0) -# endif -#endif - -#define soap_ispinfd(n) ((n) >= DBL_PINFTY) -#define soap_ispinff(n) ((n) >= FLT_PINFTY) -#define soap_isninfd(n) ((n) <= DBL_NINFTY) -#define soap_isninff(n) ((n) <= FLT_NINFTY) - -/* gSOAP error codes */ - -#define SOAP_EOF EOF -#define SOAP_ERR EOF -#define SOAP_OK 0 -#define SOAP_CLI_FAULT 1 -#define SOAP_SVR_FAULT 2 -#define SOAP_TAG_MISMATCH 3 -#define SOAP_TYPE 4 -#define SOAP_SYNTAX_ERROR 5 -#define SOAP_NO_TAG 6 -#define SOAP_IOB 7 -#define SOAP_MUSTUNDERSTAND 8 -#define SOAP_NAMESPACE 9 -#define SOAP_USER_ERROR 10 -#define SOAP_FATAL_ERROR 11 -#define SOAP_FAULT 12 -#define SOAP_NO_METHOD 13 -#define SOAP_NO_DATA 14 -#define SOAP_GET_METHOD 15 -#define SOAP_PUT_METHOD 16 -#define SOAP_DEL_METHOD 17 -#define SOAP_HEAD_METHOD 18 -#define SOAP_HTTP_METHOD 19 -#define SOAP_EOM 20 -#define SOAP_MOE 21 -#define SOAP_HDR 22 -#define SOAP_NULL 23 -#define SOAP_DUPLICATE_ID 24 -#define SOAP_MISSING_ID 25 -#define SOAP_HREF 26 -#define SOAP_UDP_ERROR 27 -#define SOAP_TCP_ERROR 28 -#define SOAP_HTTP_ERROR 29 -#define SOAP_SSL_ERROR 30 -#define SOAP_ZLIB_ERROR 31 -#define SOAP_DIME_ERROR 32 -#define SOAP_DIME_HREF 33 -#define SOAP_DIME_MISMATCH 34 -#define SOAP_DIME_END 35 -#define SOAP_MIME_ERROR 36 -#define SOAP_MIME_HREF 37 -#define SOAP_MIME_END 38 -#define SOAP_VERSIONMISMATCH 39 -#define SOAP_PLUGIN_ERROR 40 -#define SOAP_DATAENCODINGUNKNOWN 41 -#define SOAP_REQUIRED 42 -#define SOAP_PROHIBITED 43 -#define SOAP_OCCURS 44 -#define SOAP_LENGTH 45 -#define SOAP_FD_EXCEEDED 46 - -#define soap_xml_error_check(e) ((e) == SOAP_TAG_MISMATCH || (e) == SOAP_NO_TAG || (e) == SOAP_SYNTAX_ERROR || (e) == SOAP_NAMESPACE || (e) == SOAP_DUPLICATE_ID || (e) == SOAP_MISSING_ID || (e) == SOAP_REQUIRED || (e) == SOAP_PROHIBITED || (e) == SOAP_OCCURS || (e) == SOAP_LENGTH || (e) == SOAP_NULL || (e) == SOAP_HREF) -#define soap_soap_error_check(e) ((e) == SOAP_CLI_FAULT || (e) == SOAP_SVR_FAULT || (e) == SOAP_VERSIONMISMATCH || (e) == SOAP_MUSTUNDERSTAND || (e) == SOAP_FAULT || (e) == SOAP_NO_METHOD) -#define soap_tcp_error_check(e) ((e) == SOAP_EOF || (e) == SOAP_TCP_ERROR) -#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR) -#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR) -#define soap_http_error_check(e) ((e) == SOAP_HTTP_ERROR || (e) == SOAP_NO_DATA || ((e) >= SOAP_GET_METHOD && (e) <= SOAP_HTTP_METHOD) || ((e) >= 100 && (e) < 600)) - -/* gSOAP HTTP response status codes 100 to 599 are reserved */ - -/* Codes 600 to 999 are user definable */ - -/* Exceptional gSOAP HTTP server response status codes >= 1000 */ - -#define SOAP_STOP 1000 /* No HTTP response */ -#define SOAP_FORM 1001 /* Form request/response */ -#define SOAP_HTML 1002 /* Custom HTML response */ -#define SOAP_FILE 1003 /* Custom file-based response */ - -/* gSOAP HTTP method codes (client) */ - -#define SOAP_POST 2000 /* POST request */ -#define SOAP_POST_FILE 2001 /* Custom file-based POST request */ -#define SOAP_GET 2002 /* GET request */ - -/* gSOAP DIME */ - -#define SOAP_DIME_CF 0x01 -#define SOAP_DIME_ME 0x02 -#define SOAP_DIME_MB 0x04 -#define SOAP_DIME_VERSION 0x08 /* DIME version 1 */ -#define SOAP_DIME_MEDIA 0x10 -#define SOAP_DIME_ABSURI 0x20 - -/* gSOAP ZLIB */ - -#define SOAP_ZLIB_NONE 0x00 -#define SOAP_ZLIB_DEFLATE 0x01 -#define SOAP_ZLIB_INFLATE 0x02 -#define SOAP_ZLIB_GZIP 0x02 - -/* gSOAP transport, connection, and content encoding modes */ - -typedef soap_int32 soap_mode; - -#define SOAP_IO 0x00000003 /* IO mask */ -#define SOAP_IO_FLUSH 0x00000000 /* flush output immediately, no buffering */ -#define SOAP_IO_BUFFER 0x00000001 /* buffer output in packets of size SOAP_BUFLEN */ -#define SOAP_IO_STORE 0x00000002 /* store entire output to determine length for transport */ -#define SOAP_IO_CHUNK 0x00000003 /* use HTTP chunked transfer AND buffer packets */ - -#define SOAP_IO_UDP 0x00000004 /* TCP or UDP */ -#define SOAP_IO_LENGTH 0x00000008 /* calc message length (internal) */ -#define SOAP_IO_KEEPALIVE 0x00000010 /* keep connection alive */ - -#define SOAP_ENC 0x00000FFF /* IO and ENC mask */ -#define SOAP_ENC_LATIN 0x00000020 /* in: accept iso-8859-1 */ -#define SOAP_ENC_XML 0x00000040 /* out: plain XML encoding, no HTTP header */ -#define SOAP_ENC_DIME 0x00000080 -#define SOAP_ENC_MIME 0x00000100 -#define SOAP_ENC_MTOM 0x00000200 -#define SOAP_ENC_ZLIB 0x00000400 -#define SOAP_ENC_SSL 0x00000800 - -#define SOAP_XML_STRICT 0x00001000 /* in: strict validation */ -#define SOAP_XML_INDENT 0x00002000 /* out: emit indented XML */ -#define SOAP_XML_IGNORENS 0x00004000 /* in: ignore namespaces */ -#define SOAP_XML_DEFAULTNS 0x00008000 /* out: emit xmlns="..." */ -#define SOAP_XML_CANONICAL 0x00010000 /* out: excC14N canonical XML */ -#define SOAP_XML_TREE 0x00020000 /* out: XML tree (no id/ref) */ -#define SOAP_XML_GRAPH 0x00040000 /* see DOM manual */ -#define SOAP_XML_NIL 0x00080000 /* out: NULLs as xsi:nil */ - -#define SOAP_C_NOIOB 0x00100000 /* don't fault on array index out of bounds (just ignore) */ -#define SOAP_C_UTFSTRING 0x00200000 /* (de)serialize strings with UTF8 content */ -#define SOAP_C_MBSTRING 0x00400000 /* (de)serialize strings with multi-byte content */ -#define SOAP_C_NILSTRING 0x00800000 /* serialize empty strings as nil (omitted) */ - -#define SOAP_XML_DOM 0x01000000 - -#define SOAP_DOM_TREE 0x02000000 -#define SOAP_DOM_NODE 0x04000000 -#define SOAP_DOM_ASIS 0x08000000 - -#define SOAP_MIME_POSTCHECK 0x10000000 /* MIME flag (internal) */ - -#define SOAP_XML_SEC 0x80000000 /* reserved for WS security */ - -/* WITH_XMLNS backward compatibility: always use XML default namespaces */ -#ifdef WITH_XMLNS -# define SOAP_IO_DEFAULT (SOAP_IO_FLUSH | SOAP_XML_DEFAULTNS) -#else -# define SOAP_IO_DEFAULT SOAP_IO_FLUSH -#endif - -/* SSL client/server authentication settings */ - -#define SOAP_SSL_NO_AUTHENTICATION 0x00 /* for testing purposes */ -#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION 0x01 /* client requires server to authenticate */ -#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION 0x02 /* server requires client to authenticate */ -#define SOAP_SSL_SKIP_HOST_CHECK 0x04 /* client does not check the common name of the host in certificate */ -#define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE 0x08 /* client does not check the expiration date of the host certificate */ -#define SOAP_SSL_NO_DEFAULT_CA_PATH 0x10 /* don't use default_verify_paths */ -#define SOAP_SSL_RSA 0x20 /* use RSA */ -#define SOAP_SSLv3 0x40 /* SSL v3 only */ -#define SOAP_TLSv1 0x80 /* TLS v1 only */ -#define SOAP_SSLv3_TLSv1 0x00 /* SSL v3 and TLS v1 support by default (no SSL v1/v2) */ - -#define SOAP_SSL_DEFAULT (SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_SSLv3_TLSv1) - -/* state */ - -#define SOAP_NONE 0 -#define SOAP_INIT 1 -#define SOAP_COPY 2 - -#define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY)) - -/* part */ - -#define SOAP_BEGIN 0 -#define SOAP_IN_ENVELOPE 2 -#define SOAP_IN_HEADER 3 -#define SOAP_END_HEADER 4 -#define SOAP_NO_BODY 5 -#define SOAP_IN_BODY 6 -#define SOAP_END_BODY 7 -#define SOAP_END_ENVELOPE 8 -#define SOAP_END 9 -#define SOAP_BEGIN_SECURITY 10 -#define SOAP_IN_SECURITY 11 -#define SOAP_END_SECURITY 12 - -/* DEBUG macros */ - -#ifndef WITH_LEAN -# ifdef DEBUG -# ifndef SOAP_DEBUG -# define SOAP_DEBUG -# endif -# ifndef SOAP_MEM_DEBUG -# define SOAP_MEM_DEBUG -# endif -# endif -#endif - -#ifdef SOAP_MEM_DEBUG -# ifndef SOAP_MALLOC -# define SOAP_MALLOC(soap, size) soap_track_malloc(soap, __FILE__, __LINE__, size) -# endif -# ifndef SOAP_FREE -# define SOAP_FREE(soap, ptr) soap_track_free(soap, __FILE__, __LINE__, ptr) -# endif -#endif - -#ifndef SOAP_MALLOC /* use libc malloc */ -# define SOAP_MALLOC(soap, size) malloc(size) -#endif - -#ifndef SOAP_FREE /* use libc free */ -# define SOAP_FREE(soap, ptr) free(ptr) -#endif - -#ifndef SOAP_NEW /* use C++ new operator */ -# if __GNUC__ < 2 -# define SOAP_NEW(type) new type /* old form w/o parenthesis */ -# else -# define SOAP_NEW(type) new (type) /* with parenthesis */ -# endif -#endif - -#ifndef SOAP_NEW_COPY /* use C++ new operator for ::copy() */ -# define SOAP_NEW_COPY(clas) new clas -#endif - -#ifndef SOAP_DELETE /* use C++ delete operator */ -# define SOAP_DELETE(obj) delete obj -#endif - -#ifndef SOAP_DELETE_ARRAY /* use C++ delete[] operator */ -# define SOAP_DELETE_ARRAY(obj) delete[] obj -#endif - -#ifdef SOAP_DEBUG -# ifndef SOAP_MESSAGE -# define SOAP_MESSAGE fprintf -# endif -# ifndef DBGLOG -# define DBGLOG(DBGFILE, CMD) \ -{ if (soap)\ - { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ - soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ - if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ - { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ - CMD;\ - fflush(fdebug);\ - }\ - }\ -} -# endif -# ifndef DBGMSG -# define DBGMSG(DBGFILE, MSG, LEN) \ -{ if (soap)\ - { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ - soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ - if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ - { fwrite((MSG), 1, (LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\ - fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ - }\ - }\ -} -# endif -# ifndef DBGFUN -# define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME)) -# define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT")\n", __FILE__, __LINE__, FNAME, (ARG))) -# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2))) -# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s("FMT1", "FMT2", "FMT3")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2), (ARG3))) -# endif -# ifndef DBGHEX -# define DBGHEX(DBGFILE, MSG, LEN) \ -{ if (soap)\ - { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ - soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\ - if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ - { int i; char *s;\ - for (s = (char*)(MSG), i = (LEN); i; i--)\ - fprintf(soap->fdebug[SOAP_INDEX_##DBGFILE], "%2.2X ", (int)*s++&0xFF);\ - fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ - }\ - }\ -} -# endif -#else -# define DBGLOG(DBGFILE, CMD) -# define DBGMSG(DBGFILE, MSG, LEN) -# define DBGFUN(FNAME) -# define DBGFUN1(FNAME, FMT, ARG) -# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) -# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) -# define DBGHEX(DBGFILE, MSG, LEN) -#endif - -/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */ -typedef soap_int32 soap_wchar; - -/* namespace table row */ -struct Namespace -{ const char *id; - const char *ns; - const char *in; - char *out; -}; - -/* namespace stack */ -struct soap_nlist -{ struct soap_nlist *next; - unsigned int level; /* nesting depth level */ - short index; /* corresponding entry in ns mapping table */ - const char *ns; /* only set when parsed ns URI is not in the ns mapping table */ - char id[1]; /* the actual string value flows into the allocated region below this struct */ -}; - -/* block stack for nested block allocations */ -struct soap_blist -{ struct soap_blist *next; - char *ptr; - size_t size; -}; - -/* array layout */ -struct soap_array -{ void *__ptr; - int __size; -}; - -/* pointer serialization management */ -struct soap_plist -{ struct soap_plist *next; - const void *ptr; - const struct soap_array *array; - int type; - int id; - char mark1; - char mark2; -}; - -/* block allocation for pointer serialization management */ -struct soap_pblk -{ struct soap_pblk *next; - struct soap_plist plist[SOAP_PTRBLK]; -}; - -#ifdef SOAP_MEM_DEBUG -/* malloc/free tracking for debugging */ -struct soap_mlist -{ struct soap_mlist *next; - const void *ptr; - const char *file; - int line; - short live; -}; -#endif - -/* class allocation list */ -struct soap_clist -{ struct soap_clist *next; - void *ptr; - int type; - int size; - int (*fdelete)(struct soap_clist*); -}; - -/* attributes */ -struct soap_attribute -{ struct soap_attribute *next; - short flag; /* soap_set_attr: 1 = normal, 2 = utf content */ - char *value; - size_t size; - char *ns; - short visible; - char name[1]; /* the actual name string flows into the allocated region below this struct */ -}; - -#ifndef WITH_LEAN -struct soap_cookie -{ struct soap_cookie *next; - char *name; - char *value; - char *domain; - char *path; - time_t expire; /* client-side: local time to expire */ - long maxage; /* server-side: seconds to expire */ - unsigned int version; - short secure; - short session; /* server-side */ - short env; /* server-side: got cookie from client and should not be (re)send */ - short modified; /* server-side: client cookie was modified and should be send */ -}; -#endif - -SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*); - -#ifdef __cplusplus - -class soap_multipart_iterator -{ public: - struct soap_multipart *content; - bool operator==(const soap_multipart_iterator& iter) const - { return (bool)(content == iter.content); } - bool operator!=(const soap_multipart_iterator& iter) const - { return (bool)(content != iter.content); } - struct soap_multipart &operator*() const - { return *content; } - soap_multipart_iterator &operator++() - { content = soap_next_multipart(content); return *this; } - soap_multipart_iterator() : content(NULL) - { } - soap_multipart_iterator(struct soap_multipart *p) : content(p) - { } -}; -#endif - -#ifndef WITH_LEANER -struct soap_dime -{ size_t count; - size_t size; - size_t chunksize; - size_t buflen; - char flags; - char *ptr; - const char *id; - const char *type; - const char *options; - struct soap_multipart *list; /* list of DIME attachments received */ - struct soap_multipart *first, *last; /* temporary in/out queue */ -#ifdef __cplusplus - soap_multipart_iterator begin() - { soap_multipart_iterator iter(list); return iter; }; - soap_multipart_iterator end() - { soap_multipart_iterator iter(NULL); return iter; }; -#endif -}; -#endif - -#ifndef WITH_LEANER -struct soap_mime -{ char *boundary; /* MIME boundary */ - const char *start; /* MIME start ID */ - struct soap_multipart *list; /* list of MIME attachments received */ - struct soap_multipart *first, *last; /* temporary in/out queue */ -#ifdef __cplusplus - soap_multipart_iterator begin() - { soap_multipart_iterator iter(list); return iter; }; - soap_multipart_iterator end() - { soap_multipart_iterator iter(NULL); return iter; }; -#endif -}; -#endif - -#ifndef WITH_LEANER -/* RFC2045 MIME content transfer encodings */ -enum soap_mime_encoding -{ SOAP_MIME_NONE, - SOAP_MIME_7BIT, - SOAP_MIME_8BIT, - SOAP_MIME_BINARY, - SOAP_MIME_QUOTED_PRINTABLE, - SOAP_MIME_BASE64, - SOAP_MIME_IETF_TOKEN, - SOAP_MIME_X_TOKEN -}; -#endif - -#ifndef WITH_LEANER -/* DIME/MIME multipart list */ -struct soap_multipart -{ struct soap_multipart *next; - char *ptr; /* points to raw data content */ - size_t size; /* size of data content */ - const char *id; /* DIME/MIME content ID or form data name */ - const char *type; /* DIME/MIME type (MIME type format) */ - const char *options; /* DIME options */ - enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */ - const char *location; /* MIME Content-Location (optional) */ - const char *description; /* MIME Content-Description (optional) */ -#ifdef __cplusplus - typedef soap_multipart_iterator iterator; -#endif -}; -#endif - -#ifndef WITH_LEANER -/* attachment DIME and MTOM XOP forwarding */ -struct soap_xlist -{ struct soap_xlist *next; - unsigned char **ptr; - int *size; - char *id; - char **type; - char **options; -}; -#endif - -/******************************************************************************/ - -#ifndef WITH_LEANER -#ifdef __cplusplus -class soap_dom_attribute_iterator -{ public: - struct soap_dom_attribute *att; - const char *nstr; - const char *name; - bool operator==(const soap_dom_attribute_iterator&) const; - bool operator!=(const soap_dom_attribute_iterator&) const; - struct soap_dom_attribute &operator*() const; - soap_dom_attribute_iterator &operator++(); - soap_dom_attribute_iterator(); - soap_dom_attribute_iterator(struct soap_dom_attribute*); - ~soap_dom_attribute_iterator(); -}; -#endif -#endif - -#ifndef WITH_LEANER -struct soap_dom_attribute -{ struct soap_dom_attribute *next; - const char *nstr; - char *name; - char *data; - wchar_t *wide; - struct soap *soap; -#ifdef __cplusplus - typedef soap_dom_attribute_iterator iterator; - struct soap_dom_attribute &set(const char *nstr, const char *name); /* set namespace and name */ - struct soap_dom_attribute &set(const char *data); /* set data */ - soap_dom_attribute_iterator begin(); - soap_dom_attribute_iterator end(); - soap_dom_attribute_iterator find(const char *nstr, const char *name); - void unlink(); - soap_dom_attribute(); - soap_dom_attribute(struct soap *soap); - soap_dom_attribute(struct soap *soap, const char *nstr, const char *name, const char *data); - ~soap_dom_attribute(); -#endif -}; -#endif - -#ifndef WITH_LEANER -#ifdef __cplusplus -class soap_dom_element_iterator -{ public: - struct soap_dom_element *elt; - const char *nstr; - const char *name; - int type; - bool operator==(const soap_dom_element_iterator&) const; - bool operator!=(const soap_dom_element_iterator&) const; - struct soap_dom_element &operator*() const; - soap_dom_element_iterator &operator++(); - soap_dom_element_iterator(); - soap_dom_element_iterator(struct soap_dom_element*); - ~soap_dom_element_iterator(); -}; -#endif -#endif - -#ifndef WITH_LEANER -struct soap_dom_element -{ struct soap_dom_element *next; /* next sibling */ - struct soap_dom_element *prnt; /* parent */ - struct soap_dom_element *elts; /* list of child elements */ - struct soap_dom_attribute *atts; /* list of attributes */ - const char *nstr; /* namespace string */ - char *name; /* element tag name */ - char *data; /* element content data (with SOAP_C_UTFSTRING flag set) */ - wchar_t *wide; /* element content data */ - int type; /* optional: serialized C/C++ data type */ - void *node; /* optional: pointer to serialized C/C++ data */ - char *head; /* leading content before start tag */ - char *tail; /* leading content before end tag */ - struct soap *soap; /* soap context that manages this node */ -#ifdef __cplusplus - typedef soap_dom_element_iterator iterator; - struct soap_dom_element &set(const char *nstr, const char *name); - struct soap_dom_element &set(const char *data); - struct soap_dom_element &set(void *node, int type); - struct soap_dom_element &add(struct soap_dom_element*); - struct soap_dom_element &add(struct soap_dom_element&); - struct soap_dom_element &add(struct soap_dom_attribute*); - struct soap_dom_element &add(struct soap_dom_attribute&); - soap_dom_element_iterator begin(); - soap_dom_element_iterator end(); - soap_dom_element_iterator find(const char *nstr, const char *name); - soap_dom_element_iterator find(int type); - void unlink(); - soap_dom_element(); - soap_dom_element(struct soap *soap); - soap_dom_element(struct soap *soap, const char *nstr, const char *name); - soap_dom_element(struct soap *soap, const char *nstr, const char *name, const char *data); - soap_dom_element(struct soap *soap, const char *nstr, const char *name, void *node, int type); - ~soap_dom_element(); -#endif -}; -SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(struct soap_dom_element *elt); -SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(struct soap_dom_attribute *att); -#endif - -#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) -} -extern std::ostream &operator<<(std::ostream&, const struct soap_dom_element&); -extern std::istream &operator>>(std::istream&, struct soap_dom_element&); -extern "C" { -#endif - -/******************************************************************************/ - -#ifdef WIN32 -# ifdef SOAP_STD_EXPORTS -# define SOAP_STD_API __declspec(dllexport) -# else -# define SOAP_STD_API -# endif -#else -# define SOAP_STD_API -#endif - -struct SOAP_STD_API soap -{ short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */ - short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table) */ - soap_mode mode; - soap_mode imode; - soap_mode omode; - const char *float_format; /* user-definable format string for floats (<1024 chars) */ - const char *double_format; /* user-definable format string for doubles (<1024 chars) */ - const char *dime_id_format; /* user-definable format string for integer DIME id ( 0, gives socket recv timeout in seconds, < 0 in usec */ - int send_timeout; /* when > 0, gives socket send timeout in seconds, < 0 in usec */ - int connect_timeout; /* when > 0, gives socket connect() timeout in seconds, < 0 in usec */ - int accept_timeout; /* when > 0, gives socket accept() timeout in seconds, < 0 in usec */ -#if defined(WITH_OPENSSL) && defined(KMS_SERVER) - /* Sun customization for Ultra 2 KMS Server */ - int ssl_accept_timeout; /* default 10s unless overridden by this field, specified in seconds, time in SSL_Accept() */ -#endif - int socket_flags; /* socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */ - int connect_flags; /* connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */ - int bind_flags; /* bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */ - int accept_flags; /* accept() SOL_SOCKET sockopt flags */ - unsigned short linger_time; /* linger time for SO_LINGER option */ - const struct Namespace *namespaces; /* Pointer to global namespace mapping table */ - struct Namespace *local_namespaces; /* Local namespace mapping table */ - struct soap_nlist *nlist; /* namespace stack */ - struct soap_blist *blist; /* block allocation stack */ - struct soap_clist *clist; /* class instance allocation list */ - void *alist; /* memory allocation (malloc) list */ - struct soap_ilist *iht[SOAP_IDHASH]; - struct soap_plist *pht[SOAP_PTRHASH]; - struct soap_pblk *pblk; /* plist block allocation */ - short pidx; /* plist block allocation */ - struct SOAP_ENV__Header *header; - struct SOAP_ENV__Fault *fault; - int idnum; - void *user; /* to pass user-defined data */ - struct soap_plugin *plugins; /* linked list of plug-in data */ - const char *userid; /* HTTP Basic authorization userid */ - const char *passwd; /* HTTP Basic authorization passwd */ - int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, size_t); - int (*fget)(struct soap*); - int (*fput)(struct soap*); - int (*fdel)(struct soap*); - int (*fhead)(struct soap*); - int (*fform)(struct soap*); - int (*fposthdr)(struct soap*, const char*, const char*); - int (*fresponse)(struct soap*, int, size_t); - int (*fparse)(struct soap*); - int (*fparsehdr)(struct soap*, const char*, const char*); - int (*fheader)(struct soap*); - int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr); - int (*fconnect)(struct soap*, const char*, const char*, int); - int (*fdisconnect)(struct soap*); - int (*fclosesocket)(struct soap*, SOAP_SOCKET); - int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int); - SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int); - SOAP_SOCKET (*faccept)(struct soap*, SOAP_SOCKET, struct sockaddr*, int *n); - int (*fclose)(struct soap*); - int (*fsend)(struct soap*, const char*, size_t); - size_t (*frecv)(struct soap*, char*, size_t); - int (*fpoll)(struct soap*); - void (*fseterror)(struct soap*, const char **c, const char **s); - int (*fignore)(struct soap*, const char*); - int (*fserveloop)(struct soap*); - void *(*fplugin)(struct soap*, const char*); - void *(*fmalloc)(struct soap*, size_t); -#ifndef WITH_LEANER - int (*fprepareinitsend)(struct soap*); - int (*fprepareinitrecv)(struct soap*); - int (*fpreparesend)(struct soap*, const char*, size_t); - int (*fpreparerecv)(struct soap*, const char*, size_t); - int (*fpreparefinalsend)(struct soap*); - int (*fpreparefinalrecv)(struct soap*); - void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*); - void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*); - void (*fdimereadclose)(struct soap*, void*); - void (*fdimewriteclose)(struct soap*, void*); - size_t (*fdimeread)(struct soap*, void*, char*, size_t); - int (*fdimewrite)(struct soap*, void*, const char*, size_t); - void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*); - void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding); - void (*fmimereadclose)(struct soap*, void*); - void (*fmimewriteclose)(struct soap*, void*); - size_t (*fmimeread)(struct soap*, void*, char*, size_t); - int (*fmimewrite)(struct soap*, void*, const char*, size_t); -#endif - SOAP_SOCKET master; - SOAP_SOCKET socket; -#if defined(__cplusplus) && !defined(WITH_LEAN) && !defined(WITH_COMPAT) - std::ostream *os; - std::istream *is; -#else - void *os; /* preserve struct size */ - void *is; /* preserve struct size */ -#endif -#ifndef UNDER_CE - int sendfd; - int recvfd; -#else - FILE *sendfd; - FILE *recvfd; -#endif - size_t bufidx; /* index in soap.buf[] */ - size_t buflen; /* length of soap.buf[] content */ - soap_wchar ahead; /* parser lookahead */ - short cdata; /* CDATA parser state */ - short body; /* parsed XML element has a body or not */ - unsigned int level; /* XML nesting level */ - size_t count; /* message length counter */ - size_t length; /* message length as set by HTTP header */ - char *labbuf; /* look-aside buffer */ - size_t lablen; /* look-aside buffer allocated length */ - size_t labidx; /* look-aside buffer index to available part */ - char buf[SOAP_BUFLEN];/* send and receive buffer */ - char msgbuf[1024]; /* in/out buffer for HTTP/MIME headers >=1024 bytes */ - char tmpbuf[1024]; /* in/out buffer for HTTP/MIME headers, simpleType values, element and attribute tag names, and DIME must be >=1024 bytes */ - char tag[SOAP_TAGLEN]; - char id[SOAP_TAGLEN]; - char href[SOAP_TAGLEN]; - char type[SOAP_TAGLEN]; - char arrayType[SOAP_TAGLEN]; - char arraySize[SOAP_TAGLEN]; - char arrayOffset[SOAP_TAGLEN]; - short other; - short position; - int positions[SOAP_MAXDIMS]; - short root; - struct soap_attribute *attributes; /* attribute list */ - short encoding; /* when set, output encodingStyle */ - short mustUnderstand; /* a mustUnderstand element was parsed or is output */ - short null; /* parsed XML is xsi:nil */ - short ns; /* when not set, output full xmlns bindings */ - short part; /* parsing state */ - short alloced; - short peeked; - size_t chunksize; - size_t chunkbuflen; - char endpoint[SOAP_TAGLEN]; - char path[SOAP_TAGLEN]; - char host[SOAP_TAGLEN]; - char *action; - char *authrealm; /* HTTP authentication realm */ - char *prolog; /* XML declaration prolog */ - unsigned long ip; /* IP number */ - int port; /* port number */ - short keep_alive; /* connection should be kept open */ - short tcp_keep_alive; /* enable SO_KEEPALIVE */ - unsigned int tcp_keep_idle; /* set TCP_KEEPIDLE */ - unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */ - unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */ - unsigned int max_keep_alive; /* maximum keep-alive session (default=100) */ - const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */ - const char *proxy_host; /* Proxy Server host name */ - int proxy_port; /* Proxy Server port (default = 8080) */ - const char *proxy_userid; /* Proxy Authorization user name */ - const char *proxy_passwd; /* Proxy Authorization password */ - const char *proxy_from; /* X-Forwarding-For header returned by proxy */ - int status; /* -1 when request, else error code to be returned by server */ - int error; - int errmode; - int errnum; -#ifndef WITH_LEANER - struct soap_dom_element *dom; - struct soap_dime dime; - struct soap_mime mime; - struct soap_xlist *xlist; -#endif -#if !defined(WITH_LEAN) || defined(SOAP_DEBUG) - const char *logfile[SOAP_MAXLOGS]; - FILE *fdebug[SOAP_MAXLOGS]; - struct soap_mlist *mht[SOAP_PTRHASH]; -#endif -#ifndef WITH_LEAN - const char *wsuid; /* space-separated string of element tags */ - const char *c14nexclude; /* space-separated string of prefixes */ - struct soap_cookie *cookies; - const char *cookie_domain; - const char *cookie_path; - int cookie_max; -#endif -#ifndef WITH_NOIO - int ipv6_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */ - char* ipv4_multicast_if; /* always include this to keep the soap struct size the same in v4 and v6 */ - int ipv4_multicast_ttl; /* multicast scope */ -#ifdef WITH_IPV6 - struct sockaddr_storage peer; /* IPv6: set by soap_accept and by UDP recv */ -#else - struct sockaddr_in peer; /* IPv4: set by soap_connect/soap_accept and by UDP recv */ -#endif -#endif - size_t peerlen; -#if defined(WITH_OPENSSL) /* OpenSSL */ - int (*fsslauth)(struct soap*); - int (*fsslverify)(int, X509_STORE_CTX*); - BIO *bio; - SSL *ssl; - SSL_CTX *ctx; - SSL_SESSION *session; -#else /* No SSL/TLS */ - void *fsslauth; /* dummy members, to preserve struct size */ - void *fsslverify; - void *bio; - void *ssl; - void *ctx; - void *session; -#endif - unsigned short ssl_flags; - const char *keyfile; - const char *password; - const char *dhfile; - const char *cafile; - const char *capath; - const char *crlfile; - const char *randfile; - char session_host[SOAP_TAGLEN]; - int session_port; -#ifdef WITH_C_LOCALE - locale_t c_locale; /* set to C locale by default */ -#else - void *c_locale; -#endif -#ifdef WITH_ZLIB - z_stream *d_stream; /* decompression stream */ - uLong z_crc; /* internal gzip crc */ -#else - void *d_stream; /* dummy members, to preserve struct size */ - soap_int32 z_crc; -#endif - const char *z_dict; /* support for zlib static dictionaries */ - unsigned int z_dict_len; - short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */ - short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ - short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ - char *z_buf; /* buffer */ - size_t z_buflen; - unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */ - float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */ - float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */ -#ifdef WMW_RPM_IO /* VxWorks */ - void *rpmreqid; -#endif -#ifdef __cplusplus - soap(); - soap(soap_mode); - soap(soap_mode, soap_mode); - soap(const struct soap&); - virtual ~soap(); -#else - void (*dummy)(); -#endif -}; - -struct soap_code_map -{ long code; - const char *string; -}; - -/* forwarding list */ -struct soap_flist -{ struct soap_flist *next; - int type; - void *ptr; - unsigned int level; - size_t len; - void (*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t); -}; - -/* id-ref forwarding list */ -struct soap_ilist -{ struct soap_ilist *next; - int type; - size_t size; - void *link; - void *copy; - struct soap_flist *flist; - void *ptr; - unsigned int level; - char id[1]; /* the actual id string value flows into the allocated region below this struct */ -}; - -struct soap_plugin -{ struct soap_plugin *next; - const char *id; - void *data; - int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); - void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */ -}; - -#ifndef WITH_NONAMESPACES -extern SOAP_NMAC struct Namespace namespaces[]; -#endif - -#ifndef WITH_LEAN -# define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx]) -# define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++]) -#else -soap_wchar soap_get0(struct soap*); -soap_wchar soap_get1(struct soap*); -#endif - -#define soap_revget1(soap) ((soap)->bufidx--) -#define soap_unget(soap, c) ((soap)->ahead = c) -#define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL) -#define soap_imode(soap, n) ((soap)->mode = (soap)->imode = (n)) -#define soap_set_imode(soap, n) ((soap)->imode |= (n)) -#define soap_clr_imode(soap, n) ((soap)->imode &= ~(n)) -#define soap_omode(soap, n) ((soap)->mode = (soap)->omode = (n)) -#define soap_set_omode(soap, n) ((soap)->omode |= (n)) -#define soap_clr_omode(soap, n) ((soap)->omode &= ~(n)) -#define soap_set_mode(soap, n) ((soap)->imode |= (n), (soap)->omode |= (n)) -#define soap_clr_mode(soap, n) ((soap)->imode &= ~(n), (soap)->omode &= ~(n)) -#define soap_destroy(soap) soap_delete((soap), NULL) - -#ifdef HAVE_STRRCHR -# define soap_strrchr(s, t) strrchr(s, t) -#else - SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t); -#endif - -#ifdef HAVE_STRTOL -# define soap_strtol(s, t, b) strtol(s, t, b) -#else - SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char *s, char **t, int b); -#endif - -#ifdef HAVE_STRTOUL -# define soap_strtoul(s, t, b) strtoul(s, t, b) -#else - SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char *s, char **t, int b); -#endif - -#if defined(WITH_OPENSSL) -# define soap_random soap_rand() -SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void); -#elif defined(HAVE_RANDOM) -# define soap_random (int)random() -#else -# define soap_random rand() -#endif - -#ifdef WITH_NOIDREF -# define soap_embedded(s, p, t) (0) -# define soap_id_lookup(s, i, p, t, n, k) (p) -# define soap_id_forward(s, h, p, len, st, tt, n, k, fc) (p) -# define soap_reference(s, a, t) (1) -# define soap_array_reference(s, p, a, n, t) (1) -# define soap_embed(s, p, a, n, t, pp) (0) -# define soap_embedded_id(s, i, p, t) (i) -# define soap_is_embedded(s, p) (0) -# define soap_is_single(s, p) (1) -# define soap_lookup_type(s, i) (0) -# define soap_getindependent(s) (0) -# define soap_putindependent(s) (0) -# define soap_getelement(s, n) (n) -# define soap_putelement(s, p, t, i, n) (0) -# define soap_markelement(s, p, n) (0) -#endif - -SOAP_FMAC1 void SOAP_FMAC2 soap_header(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap*); -SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultcode(struct soap*); -SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultsubcode(struct soap*); -SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultstring(struct soap*); -SOAP_FMAC1 const char** SOAP_FMAC2 soap_faultdetail(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap*); - -SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_init(); -SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*); -SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int); -SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_accept(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*); -SOAP_FMAC1 const char * SOAP_FMAC2 soap_ssl_error(struct soap*, int); - -SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap*, unsigned short, const char*, const char*, const char*, const char*, const char*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, size_t count); - -SOAP_FMAC1 const char* SOAP_FMAC2 soap_get_header_attribute(struct soap*, const char*, const char*); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*); - -SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t); -SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*); -SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*); -SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int); - -SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t); -SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long); -SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int); -SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int); -SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*); - -#ifndef WITH_LEANER -SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**); -SOAP_FMAC1 int SOAP_FMAC2 soap_dime_forward(struct soap*, unsigned char**, int*, char**, char**, char**); -#endif - -#ifndef WITH_NOIDREF -SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**); -SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**); -SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_enter(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**); -SOAP_FMAC1 int SOAP_FMAC2 soap_array_pointer_lookup(struct soap*, const void *p, const struct soap_array *a, int n, int t, struct soap_plist**); -SOAP_FMAC1 int SOAP_FMAC2 soap_embed(struct soap *soap, const void *p, const struct soap_array *a, int n, const char *tag, int type); -SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*); -SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t); -SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t); -SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const struct soap_array *a, int n, int t); -SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t); -SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*); -SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*); -#endif - -SOAP_FMAC1 int SOAP_FMAC2 soap_begin_count(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_end_count(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*); - -SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char*); -SOAP_FMAC1 long SOAP_FMAC2 soap_code_int(const struct soap_code_map*, const char*, long); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_str(const struct soap_code_map*, long); -SOAP_FMAC1 long SOAP_FMAC2 soap_code_bits(const struct soap_code_map*, const char*); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_list(struct soap*, const struct soap_code_map*, long); - -SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*); - -SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t); -SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*); -SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, void*, int, int, int (*fdelete)(struct soap_clist*)); -SOAP_FMAC1 void SOAP_FMAC2 soap_unlink(struct soap*, const void*); -SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*); - -SOAP_FMAC1 void* SOAP_FMAC2 soap_track_malloc(struct soap*, const char*, int, size_t); -SOAP_FMAC1 void SOAP_FMAC2 soap_track_free(struct soap*, const char*, int, void*); - -#ifndef WITH_NOIDREF -SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id); -SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k); -SOAP_FMAC1 void* SOAP_FMAC2 soap_id_forward(struct soap*, const char *id, void *p, size_t len, int st, int tt, size_t n, unsigned int k, void(*fcopy)(struct soap*, int, int, void*, size_t, const void*, size_t)); -#endif -SOAP_FMAC1 void* SOAP_FMAC2 soap_id_enter(struct soap*, const char *id, void *p, int t, size_t n, unsigned int k, const char *type, const char *arrayType, void *(*finstantiate)(struct soap*, int, const char*, const char*, size_t*)); -SOAP_FMAC1 void SOAP_FMAC2 soap_fcopy(struct soap *soap, int st, int tt, void *p, size_t, const void *q, size_t n); - -SOAP_FMAC1 int SOAP_FMAC2 soap_size(const int *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_getsize(const char *, const char *, int *); -SOAP_FMAC1 int SOAP_FMAC2 soap_getsizes(const char *, int *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *); - -SOAP_FMAC1 char* SOAP_FMAC2 soap_putsize(struct soap*, const char *, int); -SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int); -SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizes(struct soap*, const char *, const int *, int); -SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffset(struct soap*, int); -SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int); - -SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*); - -SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new(void); -SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new1(soap_mode); -SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_new2(soap_mode, soap_mode); -SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*); -SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(const struct soap*); -SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*, const struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_copy_stream(struct soap*, struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_free_stream(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_init(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_init1(struct soap*, soap_mode); -SOAP_FMAC1 void SOAP_FMAC2 soap_init2(struct soap*, soap_mode, soap_mode); -SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*); -SOAP_FMAC1 void SOAP_FMAC2 soap_delegate_deletion(struct soap*, struct soap*); - -/* API functions available with DEBUG or SOAP_DEBUG defined: */ -SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*); -SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int); -/* */ - -SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *); -SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type); -SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_id(struct soap*, const char *tag, int id, const void *p, const struct soap_array *a, int d, const char *type, int n); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag); -SOAP_FMAC1 void SOAP_FMAC2 soap_check_result(struct soap*, const char *tag); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag); -SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag); - -SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type); - -SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag); - -SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*); - -SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*); - -SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*); -SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstrdup(struct soap*, const wchar_t*); -SOAP_FMAC1 const char * SOAP_FMAC2 soap_tagsearch(const char *big, const char *little); - -SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag); -SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long); - -#ifndef WITH_LEANER -SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag); -SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long); -#endif - -SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, size_t n1, size_t n2); - -SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, const struct Namespace*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_local_namespaces(struct soap*); - -SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*); -SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace(struct soap *soap, const char *tag); - -SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_lookup_ns(struct soap *soap, const char *tag, size_t n); - -SOAP_FMAC1 int SOAP_FMAC2 soap_store_lab(struct soap*, const char*, size_t); -SOAP_FMAC1 int SOAP_FMAC2 soap_append_lab(struct soap*, const char*, size_t); - -SOAP_FMAC1 struct soap_blist* SOAP_FMAC2 soap_new_block(struct soap*); -SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, struct soap_blist*, size_t); -SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*, struct soap_blist*); -SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, struct soap_blist*, size_t); -SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*, struct soap_blist*); -SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*, struct soap_blist*); -SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*, struct soap_blist*); -SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, struct soap_blist*, char*, int); -SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*, struct soap_blist*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*); -SOAP_FMAC1 int soap_envelope_end_out(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int); - -SOAP_FMAC1 int SOAP_FMAC2 soap_send_empty_response(struct soap*, int status); -SOAP_FMAC1 int SOAP_FMAC2 soap_recv_empty_response(struct soap*); - -SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*, int check); - -#ifndef WITH_NOSTDLIB -SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*); -SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*); -# ifndef WITH_LEAN -# ifdef __cplusplus -SOAP_FMAC1 void SOAP_FMAC2 soap_stream_fault(struct soap*, std::ostream&); -# endif -SOAP_FMAC1 char* SOAP_FMAC2 soap_sprint_fault(struct soap*, char*, size_t); -# endif -#endif - -SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2string(struct soap*, const char*, char**, long minlen, long maxlen); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**, long minlen, long maxlen); - -#ifndef WITH_LEAN -SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**, long minlen, long maxlen); -SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*); -SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, int); -SOAP_FMAC1 char* SOAP_FMAC2 soap_s2hex(struct soap*, const unsigned char*, char*, int); -#endif - -SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*); - -#ifndef WITH_LEAN -SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, int*); -SOAP_FMAC1 const char* SOAP_FMAC2 soap_hex2s(struct soap*, const char*, char*, size_t, int*); -#endif - - -SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int); -SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int); -SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int); -SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int); -SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int); -SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int); -SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int); -SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int); -SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int); -SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int); -SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int); -SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int); -SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long); -SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p); - -#ifndef WITH_LEAN -SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int); -SOAP_FMAC1 time_t SOAP_FMAC2 soap_timegm(struct tm*); -#endif - -#ifndef WITH_LEANER -SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, long, long); -SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p); -#endif - -SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type); - -#ifndef WITH_LEAN -SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int); -#endif - -#ifndef WITH_LEANER -SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type); -#endif - -#ifndef WITH_LEANER -SOAP_FMAC1 int SOAP_FMAC2 soap_attachment(struct soap *, const char*, int, const void*, const struct soap_array*, const char*, const char*, const char*, int, const char*, int); -SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, long); -SOAP_FMAC1 size_t SOAP_FMAC2 soap_tell(struct soap*); -SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*); -SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start); -SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_set_dime_attachment(struct soap*, char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option); -SOAP_FMAC1 int SOAP_FMAC2 soap_set_mime_attachment(struct soap*, char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description); -SOAP_FMAC1 void SOAP_FMAC2 soap_post_check_mime_attachments(struct soap *soap); -SOAP_FMAC1 int SOAP_FMAC2 soap_check_mime_attachments(struct soap *soap); -SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_get_mime_attachment(struct soap *soap, void *handle); -SOAP_FMAC1 int SOAP_FMAC2 soap_match_cid(struct soap*, const char*, const char*); -#endif - -SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*); -SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*); - -SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag); -SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value, int flag); -SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap); - -#ifdef WITH_COOKIES -SOAP_FMAC1 void SOAP_FMAC2 soap_getcookies(struct soap *soap, const char *val); -SOAP_FMAC1 size_t SOAP_FMAC2 soap_encode_cookie(const char*, char*, size_t); -SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*); -SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*); -SOAP_FMAC1 extern int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*); -SOAP_FMAC1 extern int SOAP_FMAC2 soap_getenv_cookies(struct soap*); -SOAP_FMAC1 extern struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, const struct soap*); -SOAP_FMAC1 extern void SOAP_FMAC2 soap_free_cookies(struct soap*); -SOAP_FMAC1 int SOAP_FMAC2 soap_putsetcookies(struct soap *soap); -SOAP_FMAC1 int SOAP_FMAC2 soap_putcookies(struct soap *soap, const char *domain, const char *path, int secure); -#endif - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* STDSOAP_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SYSCommon.c --- a/usr/src/lib/libkmsagent/common/SYSCommon.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2307 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*--------------------------------------------------------------------------- - * Module: SYSCommon.c - *-------------------------------------------------------------------------*/ - -#include -#include "SYSCommon.h" -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#endif - -#ifdef WIN32 -#include -#include /* for malloc, calloc, and free */ -#elif defined K_LINUX_PLATFORM -#include /* it includes usleep(us) */ -#include -#include -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif - -#ifdef K_SOLARIS_PLATFORM -/* For K_AdjustLocalClock */ -#include -/* For K_SetRootPassword */ -#define __EXTENSIONS__ /* to expose flockfile and friends in stdio.h */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#ifdef K_LINUX_PLATFORM -extern int pthread_mutexattr_settype __P ((pthread_mutexattr_t *__attr, - int __kind)); -#endif - -#ifdef K_HPUX_PLATFORM -int64 atoll(const char *str) -{ - int64 tmp = 0; - sscanf(str, "%lld", &tmp); - return tmp; -} - -#endif - - -/*--------------------------------------------------------------------------- - * Function: K_CreateThread - * - * Description: - * Thread creation function "CreateThread" takes a thread function - * and its parameter to create a thread. It also has a Boolean - * parameter to indicate if the thread is detached or joinable. - * A new thread's handle is returned through the output parameter. - * - * Input - * ----- - * i_pFunc Function pointer of the thread function - * i_pvData The point of the parameter passed to the thread function - * i_bIsDetached The thread is detached or not - * (Note: It is not supported on Win32) - * - * Output - * ------ - * o_pNewThread The Thread handle - * - * Return value Error code - * - *--------------------------------------------------------------------------*/ - -int K_CreateThread(K_ThreadFunc i_pFunc, - void *i_pvData, - int i_bIsDetached, - K_THREAD_HANDLE *o_pNewThread) -{ - int iOK = K_SYS_OK; - int iReturn = 0; - -#ifdef WIN32 - - { - unsigned id; - - *o_pNewThread = (HANDLE)_beginthreadex(NULL, - 0, - (int (_stdcall *) (void *vpData))i_pFunc, - i_pvData, - 0, - &id); - - - if(*o_pNewThread == 0) - { -#ifdef SYS_DEBUG - printf(" (%s, %d): error creating pthread, error = %d\n", - __FILE__, __LINE__, iReturn); -#endif - return K_SYS_ERR_CREATE_THREAD; - } - - return K_SYS_OK; - } - -#else - pthread_attr_t attr; - - iReturn = pthread_attr_init(&attr); - - if ( iReturn == 0 ) - { - iReturn = pthread_attr_setdetachstate(&attr, (i_bIsDetached) ? - PTHREAD_CREATE_DETACHED : - PTHREAD_CREATE_JOINABLE); - } - -#ifdef UNIX - if ( iReturn == 0 ) - { - iReturn = pthread_attr_setstacksize(&attr, 1024*1024); - } -#endif - - if ( iReturn == 0 ) - { - iReturn = pthread_create(o_pNewThread, &attr, (void *(*)(void *)) i_pFunc, i_pvData); - } - - if ( iReturn == 0 ) - { - iReturn = pthread_attr_destroy(&attr); - } - - // TODO: Log error? - if ( iReturn ) - { -#ifdef SYS_DEBUG - printf(" (%s, %d): error creating pthread, error = %d\n", - __FILE__, __LINE__, iReturn); -#endif - - iOK = K_SYS_ERR_CREATE_THREAD; - } - - return iOK; -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_JoinThread - * - * Description: - * Thread joining function is called when the current thread - * waits another thread to terminate. - * - * Input - * ----- - * i_hThread The thread handle of the to-be-joined thread - * - * Output - * ------ - * (none) - * - * Return value Error code - * - *--------------------------------------------------------------------------*/ - -int K_JoinThread(K_THREAD_HANDLE i_hThread) -{ - int iOK = K_SYS_OK; -#ifdef WIN32 - - WaitForSingleObject(i_hThread, INFINITE); - -#else - { - int iReturn; - iReturn = pthread_join(i_hThread, NULL); - - if ( iReturn ) - { - -#ifdef SYS_DEBUG - printf(" (%s, %d): error creating pthread, error = %d\n", - __FILE__, __LINE__, iReturn); -#endif - iOK = K_SYS_ERR_JOIN_THREAD; - } - } - -#endif - return iOK; -} - - -/*--------------------------------------------------------------------------- - * Function: K_GetCurrentThreadId - * - * Description: - * Returns the thread ID of the current thread. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value The thread ID - * - *--------------------------------------------------------------------------*/ - -int K_GetCurrentThreadId() -{ -#ifdef WIN32 - return GetCurrentThreadId(); -#else - return pthread_self(); -#endif - -} - - -/*--------------------------------------------------------------------------- - * Function: K_CreateMutex - * - * Description: - * The mutex creation function creates a mutex according to the given - * mutex type, and returns the mutex handle to the output parameter. - * - * Input - * ----- - * i_bIsRecursive Indication whether the mutex can be entered recursively - * - * Output - * ------ - * o_phandle the handle pointer to the mutex - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_CreateMutex( K_MUTEX_HANDLE *o_phandle ) -{ - int iOK = K_SYS_OK; - BOOL bIsRecursive = 1; // this used to be an input -- but why do we want this to be optional? - -#ifdef WIN32 - { - *o_phandle = (WIN32Mutex *)malloc(sizeof(WIN32Mutex)); - if(*o_phandle == NULL) - { - return K_SYS_ERR_NO_MEMORY; - } - (*o_phandle)->m_bIsRecursive = bIsRecursive; - if(bIsRecursive) - { - InitializeCriticalSection(&((*o_phandle)->m_stCriticalSection)); - } - else - { - (*o_phandle)->m_handle = CreateMutex(NULL, FALSE, NULL); - } - - } -#else - { - int iType; - pthread_mutexattr_t attr; - - if ( pthread_mutexattr_init(&attr) ) - { - return K_SYS_ERR_COND; - } - - if(bIsRecursive) - { - iType = -#ifdef K_LINUX_PLATFORM - PTHREAD_MUTEX_RECURSIVE_NP; -#else - PTHREAD_MUTEX_RECURSIVE; -#endif - - if ( pthread_mutexattr_settype(&attr, iType) ) - { - return K_SYS_ERR_COND; - } - } - - *o_phandle = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); - if(*o_phandle == NULL) - { - return K_SYS_ERR_NO_MEMORY; - } - - if ( pthread_mutex_init(*o_phandle, &attr) ) - { - return K_SYS_ERR_COND; - } - - if ( pthread_mutexattr_destroy(&attr) ) - { - return K_SYS_ERR_COND; - } - } -#endif - - return iOK; -} - - -/*--------------------------------------------------------------------------- - * Function: K_LockMutex - * - * Description: - * K_LockMutex is used to lock the mutex, and K_UnlockMutex is - * used to unlock it. - * - * Input - * ----- - * i_handle the mutex handle - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_LockMutex(K_MUTEX_HANDLE i_handle) -{ - int iOK = K_SYS_OK; -#ifdef WIN32 - - if(i_handle->m_bIsRecursive) - { - EnterCriticalSection(&(i_handle->m_stCriticalSection)); - } - else - { - WaitForSingleObject(i_handle->m_handle, INFINITE); - } - -#else - - if ( pthread_mutex_lock(i_handle) ) - { - return K_SYS_ERR_COND; - } - -#endif - return iOK; // TODO: better error handling -} - - -/*--------------------------------------------------------------------------- - * Function: K_UnlockMutex - * - * Description: - * K_UnlockMutex is used to unlock the lock. - * - * Input - * ----- - * i_handle the mutex handle - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_UnlockMutex(K_MUTEX_HANDLE i_handle) -{ - int iOK = K_SYS_OK; - -#ifdef WIN32 - if(i_handle->m_bIsRecursive) - { - LeaveCriticalSection(&(i_handle->m_stCriticalSection)); - } - else - { - ReleaseMutex(i_handle->m_handle); - } - -#else - - if ( pthread_mutex_unlock(i_handle) ) - { - return K_SYS_ERR_COND; - } -#endif - - return iOK; // TODO: better error handling -} - - -/*--------------------------------------------------------------------------- - * Function: K_DestroyMutex - * - * Description: - * When a mutex is no longer needed, K_DestroyMutex must be called - * to destroy it. - * - * Input - * ----- - * i_handle the mutex handle - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_DestroyMutex(K_MUTEX_HANDLE i_handle) -{ - - int iOK = K_SYS_OK; - -#ifdef WIN32 - - if(i_handle->m_bIsRecursive) - { - DeleteCriticalSection(&(i_handle->m_stCriticalSection)); - } - else - { - CloseHandle(i_handle->m_handle); - } - free(i_handle); - -#else - pthread_mutex_destroy(i_handle); - free(i_handle); -#endif - return iOK; // TODO: better error handling -} - - -/*--------------------------------------------------------------------------- - * Function: K_InitConditionalVariable - * - * Description: - * This function initializes a conditional variable. Upon successful - * completion, the new condition variable is returned via the condition - * parameter, and 0 is returned. Otherwise, an error code is returned. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable which is to be - * initialized - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_InitConditionalVariable (K_ConditionalVariable * i_pCond) -{ - int iOK = K_SYS_OK; -#ifdef WIN32 - - i_pCond->m_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - i_pCond->m_hMutex = CreateMutex(NULL, FALSE, NULL); - i_pCond->m_iSignalAll = 0; - i_pCond->m_iNumWaiting = 0; - -#else - - if ( pthread_cond_init(i_pCond, NULL) ) - { - return K_SYS_ERR_COND; - } - -#endif - - return iOK; -} - - -/*--------------------------------------------------------------------------- - * Function: K_DestroyConditionalVariable - * - * Description: - * This function destroys a conditional variable. Upon successful - * completion, the condition variable is destroyed, and 0 is returned. - * Otherwise, an error code is returned. - * After deletion of the condition variable, the condition parameter - * is not valid until it is initialized again by a call to the - * K_InitConditionalVariable subroutine. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable which is to be - * destroyed - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_DestroyConditionalVariable(K_ConditionalVariable * i_pCond) -{ - int iOK = K_SYS_OK; -#ifdef WIN32 - CloseHandle(i_pCond->m_hMutex); - CloseHandle(i_pCond->m_hEvent); -#else - - if ( pthread_cond_destroy(i_pCond) ) - { - return K_SYS_ERR_COND; - } - -#endif - return iOK; - -} - - -/*--------------------------------------------------------------------------- - * Function: K_WaitConditionalVariable - * - * Description: - * This function is used to block on a condition variable. - * They are called with mutex locked by the calling thread or undefined - * behaviour will result. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable - * i_handle the companion mutex handle - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_WaitConditionalVariable(K_ConditionalVariable * i_pCond, - K_MUTEX_HANDLE i_handle) -{ - - int iOK = K_SYS_OK; -#ifdef WIN32 - DWORD res; - - while (1) - { - iOK = WaitForSingleObject(i_pCond->m_hMutex, INFINITE); - if (iOK != WAIT_OBJECT_0) - { - return K_SYS_ERR_COND; - } - i_pCond->m_iNumWaiting++; - ReleaseMutex(i_pCond->m_hMutex); - - K_UnlockMutex(i_handle); - res = WaitForSingleObject(i_pCond->m_hEvent, INFINITE); - i_pCond->m_iNumWaiting--; - - if (res != WAIT_OBJECT_0) - { - ReleaseMutex(i_pCond->m_hMutex); - return K_SYS_ERR_COND; - } - - if (i_pCond->m_iSignalAll) - { - if (i_pCond->m_iNumWaiting == 0) - { - ResetEvent(i_pCond->m_hEvent); - } - break; - } - - if (i_pCond->m_iSignalled) - { - i_pCond->m_iSignalled = 0; - ResetEvent(i_pCond->m_hEvent); - break; - } - ReleaseMutex(i_pCond->m_hMutex); - } - - K_LockMutex(i_handle); - - return K_SYS_OK; -#else - - if ( pthread_cond_wait(i_pCond, i_handle) ) - { - return K_SYS_ERR_COND; - } - -#endif - return iOK; // TODO: better error handling -} - - -/*--------------------------------------------------------------------------- - * Function: K_SignalConditionalVariable - * - * Description: - * This function is used to restart one of the threads that are waiting on - * the condition variable. If no threads are waiting on it, nothing happens. - * If several threads are waiting on it, exactly one is restarted. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_SignalConditionalVariable(K_ConditionalVariable * i_pCond) -{ - int iOK = K_SYS_OK; -#ifdef WIN32 - - int iReturn; - - iReturn = WaitForSingleObject(i_pCond->m_hMutex, INFINITE); - if (iReturn != WAIT_OBJECT_0) - { - return K_SYS_ERR_COND; - } - - i_pCond->m_iSignalled = 1; - - iReturn = SetEvent(i_pCond->m_hEvent); - if (iReturn == 0) - { - iOK = K_SYS_ERR_COND; - } - ReleaseMutex(i_pCond->m_hMutex); - - return iOK; -#else - - if ( pthread_cond_signal(i_pCond) ) - { - return K_SYS_ERR_COND; - } - -#endif - return iOK; -} - - -/*--------------------------------------------------------------------------- - * Function: K_BroadcastConditionalVariable - * - * Description: - * This function is used to restart all threads that are waiting on - * the condition variable. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_BroadcastConditionalVariable(K_ConditionalVariable * i_pCond) -{ - - int iOK = K_SYS_OK; - -#ifdef WIN32 - - int iReturn; - - iReturn = WaitForSingleObject(i_pCond->m_hMutex, INFINITE); - if (iReturn != WAIT_OBJECT_0) - { - return K_SYS_ERR_COND; - } - i_pCond->m_iSignalled = 1; - i_pCond->m_iSignalAll = 1; - - iReturn = SetEvent(i_pCond->m_hEvent); - - if (iReturn == 0) - { - iOK = K_SYS_ERR_COND; - } - - ReleaseMutex(i_pCond->m_hMutex); - - return iOK; - -#else - - if ( pthread_cond_broadcast(i_pCond) ) - { - return K_SYS_ERR_COND; - } - -#endif - return iOK; -} - - -/*--------------------------------------------------------------------------- - * Function: K_Sleep - * - * Description: - * Sleep for a given period in given milliseconds. - * - * Input - * ----- - * i_ms milliseconds - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ - -void K_Sleep(int i_ms) -{ -#ifdef WIN32 - Sleep(i_ms); -#else - usleep(i_ms * 1000); -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_GetTickCount - * - * Description: - * The K_GetTickCount function retrieves the number of - * milliseconds that have elapsed since the system was started. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value the elasped milliseconds since the system was started - * - *--------------------------------------------------------------------------*/ - -unsigned int K_GetTickCount() -{ -#ifdef WIN32 - return (unsigned int)GetTickCount(); -#else - { - struct timeval tv; - gettimeofday( &tv, NULL ); - /* this will rollover ~ every 49.7 days - dont surprise when it returns negative values, since we are only interested - in using sth like "tickCount2 - tickCount1" to get the time interval - */ - return ( tv.tv_sec * 1000 ) + ( tv.tv_usec / 1000 ); - } -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_AdjustClock - * - * Description: - * The K_AdjustClock function immediately adjusts the system clock by - * the given number of seconds. A positive number adjusts the system - * clock forward; a negative number adjusts the system clock backward. - * - * Input - * ----- - * i_iAdjustmentInSeconds Number of seconds by which to adjust the - * system clock - * Output - * ------ - * (none) - * - * Return value 1 if successful, 0 on error - * - *--------------------------------------------------------------------------*/ - -int K_AdjustClock( long i_iAdjustmentInSeconds ) -{ -#ifndef WIN32 - struct timeval stDateTime; - if ( 0 != gettimeofday(&stDateTime, NULL) ) - { - return FALSE; - } - - stDateTime.tv_sec += i_iAdjustmentInSeconds; - - if ( 0 != settimeofday(&stDateTime, NULL) ) - { - return FALSE; - } -#else - // TODO: implement for Windows - return FALSE; -#endif - - return TRUE; -} - - -/*--------------------------------------------------------------------------- - * Function: K_IsLittleEndian - * - * Description: - * Checks to see whether this platform uses little endian integer - * representation. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value 1 for little endian - * - *--------------------------------------------------------------------------*/ - -int K_IsLittleEndian() -{ - short iWord = 0x4321; - return ((*(unsigned char*)&iWord) == 0x21); -} - - -/*--------------------------------------------------------------------------- - * Function: K_FileLength32 - * - * Description: - * Gets the size in bytes of the file associated with the given FILE pointer. - * - * Input - * ----- - * i_fpFile File handle - * - * Output - * ------ - * (none) - * - * Return value File size in bytes, or -1L on error - * - *--------------------------------------------------------------------------*/ - -long K_FileLength32( FILE* i_fpFile ) -{ -#ifdef WIN32 - int iFileDescriptor = _fileno( i_fpFile ); - struct _stat stStat; - - if ( _fstat(iFileDescriptor, &stStat) != 0) - { - // error - return -1L; - } - -#else - int iFileDescriptor = fileno( i_fpFile ); - struct stat stStat; - - if ( fstat(iFileDescriptor, &stStat) != 0) - { - // error - return -1L; - } - -#endif - - return stStat.st_size; -} - - -/*--------------------------------------------------------------------------- - * Function: K_StringCompareNoCase - * - * Description: - * Compares the two given strings insensitive to case. - * - * Input - * ----- - * i_sString1 First string - * i_sString2 Second string - * - * Output - * ------ - * (none) - * - * Return value 0 if identical, -1 if first string is less than second - * string, or 1 if first string is greater than second - * - *--------------------------------------------------------------------------*/ - -int K_StringCompareNoCase( const char* i_sString1, const char* i_sString2 ) -{ -#ifdef WIN32 - return _stricmp( i_sString1, i_sString2 ); -#else - return strcasecmp( i_sString1, i_sString2 ); -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_StringCompareNoCaseWide - * - * Description: - * Compares the two given wide strings insensitive to case. - * - * Input - * ----- - * i_wsString1 First wide string - * i_wsString2 Second wide string - * - * Output - * ------ - * (none) - * - * Return value 0 if identical, -1 if first string is less than second - * string, or 1 if first string is greater than second - * - *--------------------------------------------------------------------------*/ - -int K_StringCompareNoCaseWide( const wchar_t* i_wsString1, const wchar_t* i_wsString2 ) -{ -#ifdef WIN32 - return _wcsicmp( i_wsString1, i_wsString2 ); -#elif defined K_SOLARIS_PLATFORM - return wscasecmp( i_wsString1, i_wsString2 ); -#else - return wcscasecmp( i_wsString1, i_wsString2 ); -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_CreateDirectory - * - * Description: - * Creates a directory with the given path name. - * - * Input - * ----- - * i_sDirectoryName Directory name - * - * Output - * ------ - * (none) - * - * Return value 0 on success, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_CreateDirectory( const char* i_sDirectoryName ) -{ - // TODO: make this build all parent directories as well. - -#ifdef WIN32 - if ( CreateDirectoryA( i_sDirectoryName, NULL ) ) - { - return 0; - } - else - { - DWORD dwError = GetLastError(); - return ( dwError == ERROR_ALREADY_EXISTS ) ? 0 : (dwError ? dwError : -1); - } -#else - if ( mkdir( i_sDirectoryName, S_IRWXU ) == 0 ) - { - return 0; - } - else - { - return ( errno == EEXIST ) ? 0 : (errno ? errno : -1); - } -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_DeleteFile - * - * Description: - * Deletes the given file. - * - * Input - * ----- - * i_sFilename Name of file to delete - * - * Output - * ------ - * (none) - * - * Return value 0 on success, errno on failure - * - *--------------------------------------------------------------------------*/ - -int K_DeleteFile( const char* i_sFilename ) -{ - int bSuccess = 0; - - bSuccess = -#ifdef WIN32 - _unlink( -#else - unlink( -#endif - i_sFilename ) == 0; - - return bSuccess ? 0 : errno; -} - - -/*--------------------------------------------------------------------------- - * Function: K_ReadFile - * - * Description: - * Reads from the given file and passes the bytes read back to the output - * parameter. The caller must deallocate o_ppFileData using free(). - * - * Input - * ----- - * i_sFilename Name of file from which to read - * - * Output - * ------ - * o_ppFileData Pointer to bytes read - * - * Return value Number of bytes read on success, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_ReadFile( const char* i_sFilename, unsigned char** o_ppFileData ) -{ - FILE* pFile = 0; - long iFileSize = 0; - - if ( !i_sFilename || (strlen(i_sFilename) <= 0) || !o_ppFileData ) - { - return -1; - } - - *o_ppFileData = 0; - - // Open the file - - pFile = fopen( i_sFilename, "rb" ); - if ( !pFile ) - { - return -1; - } - - // Determine the file size - - if ( fseek( pFile, 0, SEEK_END ) ) - { - (void) fclose( pFile ); - return -1; - } - - iFileSize = ftell( pFile ); - if ( iFileSize < 0 ) - { - (void) fclose( pFile ); - return -1; - } - else if ( iFileSize == 0 ) - { - (void) fclose( pFile ); - return 0; - } - - if ( fseek( pFile, 0, SEEK_SET ) ) - { - (void) fclose( pFile ); - return -1; - } - - *o_ppFileData = (unsigned char*)malloc( iFileSize ); - if ( !*o_ppFileData ) - { - // Out of memory. - (void) fclose( pFile ); - return -1; - } - - if ( iFileSize != (long)fread( *o_ppFileData, 1, iFileSize, pFile ) ) - { - free( *o_ppFileData ); - *o_ppFileData = 0; - (void) fclose( pFile ); - return -1; - } - - (void) fclose( pFile ); - - return iFileSize; -} - - -/*--------------------------------------------------------------------------- - * Function: K_ReadFileString - * - * Description: - * Reads from the given file and passes the bytes read back to the output - * parameter, appending these bytes with a null terminator. There is no - * guarantee that there are no non-text characters in the returned "string". - * The caller must deallocate o_ppFileData using free(). - * - * Input - * ----- - * i_sFilename Name of file from which to read - * - * Output - * ------ - * o_psFileDataString Pointer to bytes read - * - * Return value Number of bytes read (including null terminator) on - * success (0 if file is empty), -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_ReadFileString( const char* i_sFilename, char** o_psFileDataString ) -{ - unsigned char* pFileData = 0; - int iFileSize = 0; - - *o_psFileDataString = 0; - - iFileSize = K_ReadFile( i_sFilename, &pFileData ); - - if ( iFileSize <= 0 ) - { - return iFileSize; - } - - *o_psFileDataString = (char*)malloc( iFileSize+1 ); - - if ( !*o_psFileDataString ) - { - // Out of memory. - if ( pFileData ) - { - free( pFileData ); - } - return -1; - } - - memcpy( *o_psFileDataString, pFileData, iFileSize ); - - (*o_psFileDataString)[iFileSize] = '\0'; - - if ( pFileData ) - { - free( pFileData ); - } - - return iFileSize+1; -} - - -/*--------------------------------------------------------------------------- - * Function: K_WriteFile - * - * Description: - * Writes the given bytes to the given file. - * - * Input - * ----- - * i_sFilename Name of file to which to write - * i_pFileData Bytes to write - * i_iFileDataSize Number of bytes to write - * - * Output - * ------ - * (none) - * - * Return value 0 on success, errno or -1 (generic error) on failure - * - *--------------------------------------------------------------------------*/ - -int K_WriteFile( const char* i_sFilename, const unsigned char* i_pFileData, int i_iFileDataSize ) -{ - FILE* pFile = 0; - - if ( !i_sFilename || (strlen(i_sFilename) <= 0) || (!i_pFileData && (i_iFileDataSize > 0)) || (i_iFileDataSize < 0) ) - { - return -1; - } - - pFile = fopen( i_sFilename, "wb" ); - if ( !pFile ) - { - int iError = errno; - return (iError != 0) ? iError : -1; - } - - if ( i_iFileDataSize > 0 ) - { - if ( i_iFileDataSize != (int)fwrite( i_pFileData, 1, i_iFileDataSize, pFile ) ) - { - int iError = ferror( pFile ); - (void) fclose( pFile ); - return (iError != 0) ? iError : -1; - } - } - - (void) fclose( pFile ); - - return 0; -} - - -/*--------------------------------------------------------------------------- - * Function: K_WriteFileString - * - * Description: - * Writes the given null-terminated bytes to the given file. The null - * terminator itself is not written to the file. - * - * Input - * ----- - * i_sFilename Name of file to which to write - * i_sFileData Bytes to write - * - * Output - * ------ - * (none) - * - * Return value 0 on success, errno or -1 (generic error) on failure - * - *--------------------------------------------------------------------------*/ - -int K_WriteFileString( const char* i_sFilename, const char* i_sFileData ) -{ - if ( !i_sFilename || (strlen(i_sFilename) <= 0) || !i_sFileData || (strlen(i_sFileData) <= 0) ) - { - return -1; - } - - return K_WriteFile( i_sFilename, (const unsigned char*)i_sFileData, strlen(i_sFileData) ); -} - - -/*--------------------------------------------------------------------------- - * Function: K_FileExists - * - * Description: - * Checks to see whehter the given file exists. - * - * Input - * ----- - * i_sFilename Name of file to check - * - * Output - * ------ - * (none) - * - * Return value 1 if file exists, 0 if not, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_FileExists( const char* i_sFilename ) -{ - FILE* pFile = 0; - - if ( !i_sFilename || (strlen(i_sFilename) <= 0) ) - { - return -1; - } - - pFile = fopen( i_sFilename, "r+" ); - - if ( !pFile ) - { - if ( errno == ENOENT ) - { - return 0; - } - - return -1; - } - - (void) fclose( pFile ); - - return 1; -} - - -/*--------------------------------------------------------------------------- - * Function: K_CopyFile - * - * Description: - * Reads from the given source file and writes these bytes to the given - * destination file. - * - * Input - * ----- - * i_sSrcFilename Name of file from which to read - * i_sDestFilename Name of file to which to write - * - * Output - * ------ - * o_pbFileExists Non-zero if the destination file already exists - * - * Return value 0 on success, errno or -1 (generic error) on failure - * - *--------------------------------------------------------------------------*/ - -int K_CopyFile( const char* i_sSrcFilename, const char* i_sDestFilename, int* o_pbFileExists ) -{ - unsigned char* pFileData = 0; - int iFileSize = 0; - int iError, iFileExists; - - if ( !i_sSrcFilename || (strlen(i_sSrcFilename) <= 0) - || !i_sDestFilename || (strlen(i_sDestFilename) <= 0) - || !o_pbFileExists ) - { - return -1; - } - - *o_pbFileExists = 0; - - iFileExists = K_FileExists( i_sDestFilename ); - - if ( iFileExists < 0 ) - { - iError = errno; - return (iError == 0) ? -1 : iError; - } - else if ( iFileExists > 0 ) - { - *o_pbFileExists = 1; - return -1; - } - - iFileSize = K_ReadFile( i_sSrcFilename, &pFileData ); - if ( iFileSize < 0 ) - { - iError = errno; - return (iError == 0) ? -1 : iError; - } - - iError = K_WriteFile( i_sDestFilename, pFileData, iFileSize ); - - if ( pFileData ) - { - free( pFileData ); - } - - return iError; -} - - -#ifdef K_LINUX_PLATFORM -static int fts_compare( const FTSENT** i_ppF1, const FTSENT** i_ppF2 ) -{ - return strcmp( (*i_ppF1)->fts_name, (*i_ppF2)->fts_name ); -} -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif - - -/* - * TODO: Set up functions for platform-specific find-file operations to - * help clean up the code below. - */ - -typedef struct K_FindInfo -{ -#ifdef WIN32 - struct _finddata_t m_stFindData; - long m_hFile; -#elif defined K_LINUX_PLATFORM - FTS* m_pFTS; - FTSENT* m_pFTSENT; -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ - int unused; -#endif -} K_FindInfo; - -// Memory for filename is held in i_pFindInfo. -const char* K_GetFilenameFromInfo( const K_FindInfo* i_pFindInfo ) -{ - if( !i_pFindInfo ) - { - return 0; - } - -#ifdef WIN32 - return i_pFindInfo->m_stFindData.name; -#elif defined K_LINUX_PLATFORM - return i_pFindInfo->m_pFTSENT->fts_name; -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ - FATAL_ASSERT( 0 ); - return 0; -#endif -} - -// Forward declarations -int K_FindFileNext( K_FindInfo* io_pFindInfo ); -void K_FindFileClose( K_FindInfo* io_pFindInfo ); - -// Returns 0 if successful, 1 if not found, -1 if error. -// If not error, K_FindFileClose must be called. -// o_pFindInfo must not be null. -int K_FindFileFirst( const char* i_sDirectoryName, K_FindInfo* o_pFindInfo ) -{ -#ifdef WIN32 - char* sSearchString = 0; - int iSearchStringIndex = 0; -#endif - - if ( !i_sDirectoryName || (strlen(i_sDirectoryName) <= 0) || !o_pFindInfo ) - { - return -1; - } - -#ifdef WIN32 - memset( o_pFindInfo, 0, sizeof(K_FindInfo) ); - - iSearchStringIndex = strlen(i_sDirectoryName); - if ( i_sDirectoryName[iSearchStringIndex-1] == PATH_SEPARATOR ) - { - iSearchStringIndex += 2; - } - else - { - iSearchStringIndex += 3; - } - - sSearchString = (char*)calloc( iSearchStringIndex, 1 ); - if ( !sSearchString ) - { - return -1; - } - - strcpy( sSearchString, i_sDirectoryName ); - iSearchStringIndex--; - sSearchString[iSearchStringIndex] = '\0'; - iSearchStringIndex--; - sSearchString[iSearchStringIndex] = '*'; - iSearchStringIndex--; - sSearchString[iSearchStringIndex] = PATH_SEPARATOR; - - o_pFindInfo->m_hFile = _findfirst( sSearchString, &o_pFindInfo->m_stFindData ); - free( sSearchString ); - if ( o_pFindInfo->m_hFile == -1 ) - { - if ( errno == ENOENT ) - { - return 1; - } - else - { - return -1; - } - } -#elif defined K_LINUX_PLATFORM - memset( o_pFindInfo, 0, sizeof(K_FindInfo) ); - - o_pFindInfo->m_pFTS = fts_open( aPath, FTS_PHYSICAL | FTS_NOSTAT, fts_compare ); - if ( !o_pFindInfo->m_pFTS ) - { - return -1; - } - - o_pFindInfo->m_pFTSENT = fts_read( o_pFindInfo->m_pFTS ); - if ( !o_pFindInfo->m_pFTSENT ) - { - if ( errno == 0 ) - { - return 1; - } - else - { - fts_close( o_pFindInfo->m_pFTS ); - return -1; - } - } -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif - - // If what we found is not actually a file, get the next hit. -#ifdef WIN32 - if ( (o_pFindInfo->m_stFindData.attrib & _A_SUBDIR) ) -#elif defined K_LINUX_PLATFORM - if ( !(o_pFindInfo->m_pFTSENT->fts_info & FTS_F) ) -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif - { - int iNextReturn = K_FindFileNext( o_pFindInfo ); - if ( iNextReturn < 0 ) - { - K_FindFileClose( o_pFindInfo ); - return -1; - } - else - { - return iNextReturn; - } - } - -#if defined(WIN32) || defined(K_LINUX_PLATFORM) - return 0; -#endif -} - -// Returns 0 if successful, 1 if not found, -1 if error. -int K_FindFileNext( K_FindInfo* io_pFindInfo ) -{ - if ( !io_pFindInfo ) - { - return -1; - } - -#ifdef WIN32 - if ( _findnext( io_pFindInfo->m_hFile, &io_pFindInfo->m_stFindData ) != 0 ) - { - return (errno == ENOENT) ? 1 : -1; - } -#elif defined K_LINUX_PLATFORM - io_pFindInfo->m_pFTSENT = fts_read( io_pFindInfo->m_pFTS ); - if ( !io_pFindInfo->m_pFTSENT ) - { - return (errno == 0) ? 1 : -1; - } -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif - - // If what we found is not actually a file, get the next hit. -#ifdef WIN32 - if ( (io_pFindInfo->m_stFindData.attrib & _A_SUBDIR) ) -#elif defined K_LINUX_PLATFORM - if ( !(io_pFindInfo->m_pFTSENT->fts_info & FTS_F) ) -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif - { - return K_FindFileNext( io_pFindInfo ); - } - -#if defined(WIN32) || defined(K_LINUX_PLATFORM) - return 0; -#endif -} - -void K_FindFileClose( K_FindInfo* io_pFindInfo ) -{ - if ( !io_pFindInfo ) - { - return; - } - -#ifdef WIN32 - _findclose( io_pFindInfo->m_hFile ); -#elif defined K_LINUX_PLATFORM - fts_close( io_pFindInfo->m_pFTS ); -#else -/* - * Directory traversal code is not yet available for Solaris. - * If such code will need to be written, then it will probably use ftw.h. - */ -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_GetFilenamesInDirectoryCount - * - * Description: - * Reads the given directory and returns the number of files that it contains. - * - * Input - * ----- - * i_sDirectoryName Name of directory - * - * Output - * ------ - * (none) - * - * Return value Number of files on success, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_GetFilenamesInDirectoryCount( const char* i_sDirectoryName ) -{ - K_FindInfo stFindInfo; - int iCurrentFile = 0; - int iError = 0; - - if ( !i_sDirectoryName || (strlen(i_sDirectoryName) <= 0) ) - { - return -1; - } - - iError = K_FindFileFirst( i_sDirectoryName, &stFindInfo ); - if ( iError < 0 ) - { - // error - return -1; - } - else if ( iError > 0 ) - { - // no files found - K_FindFileClose( &stFindInfo ); - return 0; - } - - while ( 1 ) - { - iCurrentFile++; - - iError = K_FindFileNext( &stFindInfo ); - if ( iError < 0 ) - { - // error - K_FindFileClose( &stFindInfo ); - return -1; - } - else if ( iError > 0 ) - { - // no more files found - break; - } - } - - K_FindFileClose( &stFindInfo ); - - return iCurrentFile; -} - - -/*--------------------------------------------------------------------------- - * Function: K_GetFilenamesInDirectory - * - * Description: - * Reads the given directory and returns an array of names of files that it - * contains. A null pointer appears at the last item in the array. The - * caller must deallocate o_pasFilenames by using K_FreeFilenames or by - * calling free() for each file name and then calling free() on the array - * itself. - * - * Input - * ----- - * i_sDirectoryName Name of directory - * - * Output - * ------ - * o_pasFilenames Array of names of files found in this directory - * - * Return value Number of files on success, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_GetFilenamesInDirectory( - const char* i_sDirectoryName, - char*** o_pasFilenames ) -{ - // Note that we iterate through the filenames twice -- once to get the count - // (K_GetFilenamesInDirectoryCount) and then once to get all the names. But - // it may happen that the count changes between these calls. So we'll retrieve - // at most the number of files that's returned in the first pass. - - K_FindInfo stFindInfo; - int iFilenameCount = 0, iCurrentFile = 0; - int iError = 0; - - if ( !i_sDirectoryName || (strlen(i_sDirectoryName) <= 0) || !o_pasFilenames ) - { - return -1; - } - - *o_pasFilenames = 0; - - iFilenameCount = K_GetFilenamesInDirectoryCount( i_sDirectoryName ); - - if ( iFilenameCount < 0 ) - { - return -1; - } - - iError = K_FindFileFirst( i_sDirectoryName, &stFindInfo ); - if ( iError < 0 ) - { - // error - return -1; - } - else if ( iError > 0 ) - { - // No files found - K_FindFileClose( &stFindInfo ); - return 0; - } - - *o_pasFilenames = (char**)calloc( (iFilenameCount+1), sizeof(char*) ); // +1 for the null last one - if ( !*o_pasFilenames ) - { - // Out of memory - K_FindFileClose( &stFindInfo ); - return -1; - } - - while ( 1 ) - { - const char* sFilename = K_GetFilenameFromInfo( &stFindInfo ); - - size_t iFilenameLength = sFilename ? strlen( sFilename ) : 0; - - if ( iFilenameLength <= 0 ) - { - K_FreeFilenames( *o_pasFilenames ); - K_FindFileClose( &stFindInfo ); - return -1; - } - - (*o_pasFilenames)[iCurrentFile] = (char*)calloc( (iFilenameLength+1), sizeof(char) ); - if ( !(*o_pasFilenames)[iCurrentFile] ) - { - K_FreeFilenames( *o_pasFilenames ); - K_FindFileClose( &stFindInfo ); - return -1; - } - - strncpy( (*o_pasFilenames)[iCurrentFile], sFilename, iFilenameLength ); - (*o_pasFilenames)[iCurrentFile][iFilenameLength] = '\0'; - - iCurrentFile++; - - if ( iCurrentFile >= iFilenameCount ) - { - break; - } - - iError = K_FindFileNext( &stFindInfo ); - if ( iError < 0 ) - { - // error - K_FindFileClose( &stFindInfo ); - return -1; - } - else if ( iError > 0 ) - { - // no more files found - break; - } - } - - K_FindFileClose( &stFindInfo ); - - return iCurrentFile; -} - - -/*--------------------------------------------------------------------------- - * Function: K_FreeFilenames - * - * Description: - * Deallocates the memory allocated in a successful call to - * K_GetFilenamesInDirectory. - * - * Input - * ----- - * i_asFilenames Array of names of files - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ - -void K_FreeFilenames( char** i_asFilenames ) -{ - int i; - - if ( !i_asFilenames ) - { - return; - } - - for ( i = 0; (i_asFilenames[i] != 0); i++ ) - { - free( i_asFilenames[i] ); - i_asFilenames[i] = 0; - } - - free( i_asFilenames ); -} - - -/*--------------------------------------------------------------------------- - * Function: K_AdjustLocalClock - * - * Description: - * The K_AdjustLocalClock function gradually adjusts the system clock by - * the given number of seconds. A positive number adjusts the system - * clock forward; a negative number adjusts the system clock backward. - * - * Input - * ----- - * i_iAdjustmentInSeconds Number of seconds by which to adjust the - * system clock - * Output - * ------ - * (none) - * - * Return value 1 if successful, 0 on error - * - *--------------------------------------------------------------------------*/ - -int K_AdjustLocalClock( int i_iNumberOfSeconds ) -{ - struct timeval delta, lastchange; - -#ifndef K_SOLARIS_PLATFORM - /* Only supported/tested on Solaris at the moment */ - - return -1; -#else - /* WARNING: uses standard C time functions with Year 2038 limitations */ - time_t now; - - if ( (now = time(NULL)) == ((time_t)-1) ) - { - return -1; - } - - delta.tv_sec = i_iNumberOfSeconds; - delta.tv_usec = 0; - - return adjtime(&delta, &lastchange); -#endif -} - - -#ifdef K_SOLARIS_PLATFORM -static int pam_tty_conv( - int num_msg, - struct pam_message** mess, - struct pam_response** resp, - void* my_data) -{ - // Following code implements a console-based PAM "conversation" function - // (based sample code from Solaris 10 Software Developer Collection >> - // Solaris Security for Developers Guide >> - // 3. Writing PAM Applications and Services) - - struct pam_message* m = *mess; - struct pam_response* r; - int i, j; - const char* sPassword = (const char*)my_data; - int error = PAM_CONV_ERR; - - if (num_msg <= 0 || num_msg >= PAM_MAX_NUM_MSG) - { - (void) fprintf(stderr, "PAM error: bad number of messages"); - *resp = NULL; - return (PAM_CONV_ERR); - } - - if ((*resp = r = calloc(num_msg, sizeof (struct pam_response))) == NULL) - { - return (PAM_BUF_ERR); - } - - // Loop through messages - for (i = 0; i < num_msg; i++) { - - // bad message from service module - if (m->msg == NULL) - { - (void) fprintf(stderr, "PAM error: bad message"); - goto err; - } - - // fix up final newline: removed for prompts, added back for messages - if (m->msg[strlen(m->msg)] == '\n') - { - m->msg[strlen(m->msg)] = '\0'; - } - - // Since the KMA has its own password prompts and enforces its own rule checks, we already have the - // new password in memory. So instead of displaying PAM prompts and collecting user responses, we - // "automate" by assuming that the prompts correspond to the standard sequence of "New password:" - // followed by "Confirm password:" and so in each case we immediately return the password we already - // have in memory. This violates the PAM "conversation" function instructions (which say, basically, - // not to assume any particular sequence of prompts since there could be any number of underlying - // password managers), but since the KMA is running on an appliance with a fixed password manager, - // our assumptions should hold. - - r->resp = NULL; - r->resp_retcode = 0; - switch (m->msg_style) - { - case PAM_PROMPT_ECHO_OFF: - case PAM_PROMPT_ECHO_ON: - // Assume the prompt asked for New/Confirm password, so return password. - if ( (r->resp = strdup(sPassword)) == NULL ) - { - error = PAM_BUF_ERR; - goto err; - } - break; - - case PAM_ERROR_MSG: - // Assuming the system is configured properly and the KMA password prompts enforce password strength rules, - // there should not be errors because of weak passwords, etc. Still, print errors so users/support can - // diagnose problems. - (void) fputs(m->msg, stderr); - (void) fputc('\n', stderr); - break; - - case PAM_TEXT_INFO: - // Supress prompts (again, making assumptions). - break; - - default: - (void) fprintf(stderr, "PAM error: unknown message"); - goto err; - } - if (errno == EINTR) - { - goto err; - } - - // next message/response - m++; - r++; - } - return (PAM_SUCCESS); - -err: - // Service modules do not clean up responses if an error is returned. - // Free responses here. - for (j = 0; j < i; j++, r++) - { - if (r->resp) - { - // clear before freeing -- may be a password - bzero(r->resp, strlen(r->resp)); - free(r->resp); - r->resp = NULL; - } - } - free(r); - *resp = NULL; - return error; -} -#endif - - -/*--------------------------------------------------------------------------- - * Function: K_SetRootPassword - * - * Description: - * The K_SetRootPassword function sets the password for the root user via - * Pluggable Authentication Module (PAM). This function is interactive. - * - * Input - * ----- - * i_sPassword Password to set - * - * Output - * ------ - * (none) - * - * Return value 0 if successful, -1 on error - * - *--------------------------------------------------------------------------*/ - -int K_SetRootPassword( const char* i_sPassword ) -{ - // Only supported/tested on Solaris at the moment -#ifndef K_SOLARIS_PLATFORM - return -1; -#else - // Based on sample code from Solaris 10 Software Developer Collection >> - // Solaris Security for Developers Guide >> - // 3. Writing PAM Applications and Services - - // TODO: Return PAM error codes (to be logged) instead of emitting - // messages to screen? - - struct pam_conv conv; - pam_handle_t *pamh; - int err; - - conv.conv = pam_tty_conv; - conv.appdata_ptr = (void*)i_sPassword; - - // Initialize PAM framework - err = pam_start("KeyMgr", "root", &conv, &pamh); - if (err != PAM_SUCCESS) - { - fprintf(stderr, "PAM error: %s\n", pam_strerror(pamh, err)); - return -1; - } - - // Change password - err = pam_chauthtok(pamh, 0); - if (err != PAM_SUCCESS) - { - fprintf(stderr, "PAM error: %s\n", pam_strerror(pamh, err)); - // fall through to cleanup - } - - // Cleanup session - pam_end(pamh, 0); - - return (err == PAM_SUCCESS) ? 0 : -1; -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_Alarm - * - * Description: - * Calls alarm(2) on Unix in order to cause the operating system to generate - * a SIGALRM signal for this process after the given number of real-time - * seconds. Does nothing on Windows. - * - * Input - * ----- - * i_iSeconds Number of seconds after which to generate a SIGALRM - * signal - * - * Output - * ------ - * (none) - * - * Return value If a previous alarm request is pending, then it returns - * the number of seconds until this previous request would - * have generated a SIGALRM signal. Otherwise, returns 0. - * - *--------------------------------------------------------------------------*/ - -unsigned int K_Alarm( unsigned int i_iSeconds ) -{ -#ifndef WIN32 - return alarm( i_iSeconds ); -#else - return 0; -#endif -} - - -/*--------------------------------------------------------------------------- - * Function: K_GetExtendedVersionFromBase - * - * Description: - * This KMS-specific function prepends the timestamp value to the specified - * base replication schema version and returns this value as an extended - * replication schema version. - * - * Input - * ----- - * i_iBaseSchemaVersion Base replication schema version - * - * Output - * ------ - * (none) - * - * Return value Extended replication schema version - * - *--------------------------------------------------------------------------*/ - -unsigned int K_GetExtendedVersionFromBase( unsigned int i_iBaseSchemaVersion ) -{ - // seconds since 1970, force to 32-bit -#ifdef WIN32 - INT32 iTimeStamp = (INT32) time(NULL); -#else - int32_t iTimeStamp = (int32_t) time(NULL); -#endif - // minutes since 1970 - iTimeStamp = iTimeStamp / 60; - // minutes since 2000 (approximately) - iTimeStamp -= (30*365*24*60); - // shift 8 bits to clear out room for schema version # - iTimeStamp = iTimeStamp << 8; - // add schema version # to lower end - iTimeStamp |= i_iBaseSchemaVersion; - - return (unsigned int) iTimeStamp; - -} - - -/*--------------------------------------------------------------------------- - * Function: K_ParseTimestampFromExtendedVersion - * - * Description: - * This KMS-specific function parses the timestamp value from the given - * extended replication schema version and returns this timestamp value. - * - * Input - * ----- - * i_iExtendedSchemaVersion Extended replication schema version - * - * Output - * ------ - * (none) - * - * Return value Timestamp value - * - *--------------------------------------------------------------------------*/ - -unsigned int K_ParseTimestampFromExtendedVersion( - unsigned int i_iExtendedSchemaVersion ) -{ - unsigned int iTimeStamp = i_iExtendedSchemaVersion >> 8; - - return iTimeStamp; -} - - -/*--------------------------------------------------------------------------- - * Function: K_ParseBaseFromExtendedVersion - * - * Description: - * This KMS-specific function parses the base replication schema value from - * the given extended replication schema version and returns this base value. - * - * Input - * ----- - * i_iExtendedSchemaVersion Extended replication schema version - * - * Output - * ------ - * (none) - * - * Return value Base replication schema value - * - *--------------------------------------------------------------------------*/ - -unsigned int K_ParseBaseFromExtendedVersion( - unsigned int i_iExtendedSchemaVersion ) -{ - unsigned int iBaseSchemaVersion = i_iExtendedSchemaVersion & 0x000000FF; - - return iBaseSchemaVersion; -} - - -/*--------------------------------------------------------------------------- - * Function: K_System - * - * Description: - * This function is a thread-safe replacement for the unsafe system(3C) call. - * See the popen(3C) man page for more information. - * - * Input - * ----- - * i_sCmd Command to execute - * - * Output - * ------ - * (none) - * - * Return value Termination status of the command language interpreter - * if successful, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_System( const char *i_sCmd ) -{ -#ifndef WIN32 - FILE *p; - int rc; - struct sigaction sOldAction; - - // Save signal handler - sigaction( SIGCHLD, NULL, &sOldAction ); - - // Use default child signal handler - sigset( SIGCHLD, SIG_DFL ); - - p = popen( i_sCmd, "w" ); - if ( p == NULL ) - { - rc = -1; - } - else - { - rc = pclose( p ); - } - - // Reset signal handler - sigset( SIGCHLD, sOldAction.sa_handler ); - - return rc; -#else - return system( i_sCmd ); -#endif -} - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/SYSCommon.h --- a/usr/src/lib/libkmsagent/common/SYSCommon.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1168 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*--------------------------------------------------------------------------- - * Module: System Abstraction Layer - * - * Description: - * The system layer provides an abstract layer for the most commonly - * used system calls for multi-platforms including Windows and most - * Unix variants. - * - * All the functions defined in this layer fall into 4 categories: - * Threading related functions - * Mutexes - * Conditional variables - * Other Utilities - *--------------------------------------------------------------------------*/ - -#ifndef SYS_COMMON_H -#define SYS_COMMON_H -#ifdef __cplusplus -extern "C" { -#endif - -/*--------------------------------------------------------------------------- - * ERROR code - *--------------------------------------------------------------------------*/ - -#define K_SYS_OK 0 -#define K_SYS_ERR_NO_MEMORY 1 -#define K_SYS_ERR_CREATE_THREAD 2 -#define K_SYS_ERR_JOIN_THREAD 3 -#define K_SYS_ERR_COND 4 - -/*--------------------------------------------------------------------------- - * Header files - *--------------------------------------------------------------------------*/ - -#ifdef WIN32 - #include - #include -#else - #include - - /* UNIX : added by STG */ - #include - #include -#ifndef METAWARE - #include -#endif - #include - #include - #include - - /* - * These functions are not needed, since the Agent API hides them - * enum KeystoneAgent_SortOrder {}; - * enum KeystoneAgent_FilterOperator {}; - */ - -#endif - -/*--------------------------------------------------------------------------- - * MACRO definitions - *--------------------------------------------------------------------------*/ - -#ifdef WIN32 -#define PATH_SEPARATOR '\\' -#define PATH_SEPARATOR_WSTR L"\\" -#ifndef PATH_MAX -#define PATH_MAX MAX_PATH -#endif -#else -#define PATH_SEPARATOR '/' -#define PATH_SEPARATOR_WSTR L"/" -#endif - -#ifndef BOOL -#define BOOL int -#endif -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -#ifdef K_LINUX_PLATFORM - #ifndef UNIX - #define UNIX - #endif -#endif - -#ifdef K_AIX_PLATFORM - #ifndef UNIX - #define UNIX - #endif -#endif - -#ifdef K_SOLARIS_PLATFORM - #ifndef UNIX - #define UNIX - #endif -#endif - -#ifdef K_HPUX_PLATFORM - #ifndef UNIX - #define UNIX - #endif -#endif - -/*--------------------------------------------------------------------------- - * Fatal error definitions - *--------------------------------------------------------------------------*/ - -#ifndef __FUNCTION__ -#define __FUNCTION__ "(Unknown)" -#endif - -#ifndef FATAL_APPLICATION_STATE - -#ifdef DEBUG - -#ifdef WIN32 -#include "crtdbg.h" -#define DEBUG_BREAK() { _CrtDbgBreak(); } -#else /* WIN32 */ -#ifdef METAWARE -#define DEBUG_BREAK() (void *) 0x00000000; /* dummy operation */ -#else -#if !defined(__i386) -#define DEBUG_BREAK() -#else -#ifdef __GNUC__ -#define DEBUG_BREAK() { __asm__ ( "int3" ); } /* NOTE: This only works for x86 platforms */ -#else -#define DEBUG_BREAK() -#endif -#endif /* __i386 */ -#endif /* METAWARE */ -#endif /* WIN32 */ - -#define FATAL_APPLICATION_STATE() \ -do { \ - DEBUG_BREAK(); \ - process_fatal_application_state(__FILE__,__FUNCTION__,__LINE__,0); \ -} while(0) - -#define FATAL_APPLICATION_STATE1(additional_text) \ -do { \ - DEBUG_BREAK(); \ - process_fatal_application_state(__FILE__,__FUNCTION__,__LINE__,additional_text); \ -} while(0) - -#else //DEBUG - -#define DEBUG_BREAK() - -#define FATAL_APPLICATION_STATE() \ -do { \ - process_fatal_application_state(__FILE__,__FUNCTION__,__LINE__,0); \ -} while(0) - -#define FATAL_APPLICATION_STATE1(additional_text) \ -do { \ - process_fatal_application_state(__FILE__,__FUNCTION__,__LINE__,additional_text); \ -} while(0) - -#endif //DEBUG - -#define FATAL_ASSERT(expression) do { if(!(expression)) {FATAL_APPLICATION_STATE();} } while(0) -#define FATAL_ASSERT1(expression,additional_text) do { if(!(expression)) {FATAL_APPLICATION_STATE1(additional_text);} } while(0) - -/* MS Visual Studio compiler does not support __attribute__() */ -#ifndef __GNUC__ -#define __attribute__(x) -#endif - -void process_fatal_application_state(const char* sFile, const char* sFunction, int iLine, const char* sAdditionalText) __attribute__((noreturn)); - -void generate_stack_trace(const char* i_sFile, const wchar_t* i_wsErrMsg); - -#endif /* FATAL_APPLICATION_STATE */ - -/*--------------------------------------------------------------------------- - * Primitive type definitions - *--------------------------------------------------------------------------*/ - -#ifdef WIN32 -typedef __int64 int64; -#else -#ifndef K_AIX_PLATFORM -typedef signed long long int64; -#endif -#endif - - -#ifdef K_HPUX_PLATFORM -wchar_t* wcsstr (const wchar_t* haystack, const wchar_t* needle); -int wprintf (const wchar_t* format, ...); -int swprintf (wchar_t* s, size_t maxlen, const wchar_t* format, ...); -int vswprintf (wchar_t* s, size_t maxlen, const wchar_t* format, va_list args); -int swscanf(const wchar_t *s, const wchar_t *format, ...); -int64 atoll(const char *str); -#endif - -/*--------------------------------------------------------------------------- - * Thread type definitions - *--------------------------------------------------------------------------*/ - -#ifdef WIN32 -typedef HANDLE K_THREAD_HANDLE; -#else -typedef pthread_t K_THREAD_HANDLE; -#endif - -/*--------------------------------------------------------------------------- - * Mutex type definitions - *--------------------------------------------------------------------------*/ - -#ifdef WIN32 - -typedef struct { - HANDLE m_handle; /* mutex handle */ - - CRITICAL_SECTION m_stCriticalSection; /* criticalSection */ - - int m_bIsRecursive; -} WIN32Mutex; - -typedef WIN32Mutex* K_MUTEX_HANDLE; - -#else -typedef pthread_mutex_t* K_MUTEX_HANDLE; -#endif - -/*--------------------------------------------------------------------------- - * Conditional variable type definitions - *--------------------------------------------------------------------------*/ - -#ifdef WIN32 - struct K_CondStruct - { - HANDLE m_hEvent; - HANDLE m_hMutex; - int m_iSignalAll; - int m_iNumWaiting; - int m_iSignalled; - }; - typedef struct K_CondStruct K_ConditionalVariable; - -#else - typedef pthread_cond_t K_ConditionalVariable; -#endif - -/*--------------------------------------------------------------------------- - * Thread function type definitions - *--------------------------------------------------------------------------*/ - - /* - * Having the function return int breaks compatibility between Windows - * and Unix; the function has to return void - */ -/*#ifdef WIN32 - * typedef int (_stdcall *K_ThreadFunc) (void *vpData); - *#else - */ - typedef void (*K_ThreadFunc) (void *vpData); -/* - *#endif - */ - - -/*--------------------------------------------------------------------------- - * Function: K_CreateThread - * - * Description: - * This thread creation function takes a thread function - * and its parameter to create a thread. It also has a Boolean - * parameter to indicate if the thread is detached or joinable. - * A new thread's handle is returned through the output parameter. - * - * Input - * ----- - * i_pFunc Function pointer of the thread function - * i_pvData The point of the parameter passed to the thread function - * i_bIsDetached The thread is detached or not. If detached, then it is - * not joinable. (Note: It is not supported on Win32) - * - * Output - * ------ - * o_pNewThread The Thread handle - * - * Return value Error code - * - *--------------------------------------------------------------------------*/ -int K_CreateThread(K_ThreadFunc i_pFunc, - void *i_pvData, - int i_bIsDetached, - K_THREAD_HANDLE *o_pNewThread); - - -/*--------------------------------------------------------------------------- - * Function: K_JoinThread - * - * Description: - * This thread joining function is called when the current thread - * waits another thread to terminate. - * - * Input - * ----- - * i_hThread The thread handle of the to-be-joined thread - * - * Output - * ------ - * (none) - * - * Return value Error code - * - *--------------------------------------------------------------------------*/ -int K_JoinThread(K_THREAD_HANDLE i_hThread); - - -/*--------------------------------------------------------------------------- - * Function: K_GetCurrentThreadId - * - * Description: - * Returns the thread ID of the current thread. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value The thread ID - * - *--------------------------------------------------------------------------*/ - -int K_GetCurrentThreadId(); - - -/*--------------------------------------------------------------------------- - * Function: K_CreateMutex - * - * Description: - * The mutex creation function creates a mutex according to the given - * mutex type, and returns the mutex handle to the output parameter. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * o_phandle the handle pointer to the mutex - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_CreateMutex( K_MUTEX_HANDLE *o_phandle ); - - -/*--------------------------------------------------------------------------- - * Function: K_LockMutex - * - * Description: - * K_LockMutex is used to lock the mutex, and K_UnlockMutex is - * used to unlock it. - * - * Input - * ----- - * i_handle the mutex handle - * - * Output - * ------ - * (none) - * - * return value Error Code - * - *--------------------------------------------------------------------------*/ -int K_LockMutex(K_MUTEX_HANDLE i_handle); - - -/*--------------------------------------------------------------------------- - * Function: K_UnlockMutex - * - * Description: - * K_UnlockMutex is used to unlock the lock. - * - * Input - * ----- - * i_handle the mutex handle - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ -int K_UnlockMutex(K_MUTEX_HANDLE i_handle); - - -/*--------------------------------------------------------------------------- - * Function: K_DestroyMutex - * - * Description: - * When a mutex is no longer needed, K_DestroyMutex must be called - * to destroy it. - * - * Input - * ----- - * i_handle the mutex handle - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_DestroyMutex(K_MUTEX_HANDLE i_handle); - - -/*--------------------------------------------------------------------------- - * - * The following section defines Conditional Variable - * - * Conditional Variable implements similar functionalities defined - * in POSIX thread library. But it only supports conditional variables - * inside one process and doesn't support pthread_cond_timedwait(). -*--------------------------------------------------------------------------*/ - - -/*--------------------------------------------------------------------------- - * Function: K_InitConditionalVariable - * - * Description: - * This function initializes a conditional variable; Upon successful - * completion, the new condition variable is returned via the condition - * parameter, and 0 is returned. Otherwise, an error code is returned. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable which is to be - * initialized - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ -int K_InitConditionalVariable (K_ConditionalVariable * i_pCond); - - - -/*--------------------------------------------------------------------------- - * Function: K_DestroyConditionalVariable - * - * Description: - * This function destroys a conditional variable. Upon successful - * completion, the condition variable is destroyed, and 0 is returned. - * Otherwise, an error code is returned. - * After deletion of the condition variable, the condition parameter - * is not valid until it is initialized again by a call to the - * K_InitConditionalVariable subroutine. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable which is to be - * destroyed - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ - -int K_DestroyConditionalVariable(K_ConditionalVariable * i_pCond); - - -/*--------------------------------------------------------------------------- - * Function: K_WaitConditionalVariable - * - * Description: - * This function is used to block on a condition variable. - * They are called with mutex locked by the calling thread or undefined - * behaviour will result. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable - * i_handle the companion mutex handle - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ -int K_WaitConditionalVariable(K_ConditionalVariable * i_pCond, - K_MUTEX_HANDLE i_handle); - - -/*--------------------------------------------------------------------------- - * Function: K_SignalConditionalVariable - * - * Description: - * This function is used to restart one of the threads that are waiting on - * the condition variable. If no threads are waiting on it, nothing happens. - * If several threads are waiting on it, exactly one is restarted. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ -int K_SignalConditionalVariable(K_ConditionalVariable * i_pCond); - - -/*--------------------------------------------------------------------------- - * Function: K_BroadcastConditionalVariable - * - * Description: - * This function is used to restart all threads that are waiting on - * the condition variable. - * - * Input - * ----- - * i_pCond the pointer to the conditional variable - * - * Output - * ------ - * (none) - * - * Return value Error Code - * - *--------------------------------------------------------------------------*/ -int K_BroadcastConditionalVariable(K_ConditionalVariable * i_pCond); - - -/*--------------------------------------------------------------------------- - * Function: K_Sleep - * - * Description: - * Sleep for a given period in the given milliseconds. - * - * Input - * ----- - * i_ms milliseconds - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ -void K_Sleep(int i_ms); - - -/*--------------------------------------------------------------------------- - * Function: K_GetTickCount - * - * Description: - * The K_GetTickCount function retrieves the number of - * milliseconds that have elapsed since the system was started. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value the elasped milliseconds since the system was started - * - *--------------------------------------------------------------------------*/ -unsigned int K_GetTickCount(); - - -/*--------------------------------------------------------------------------- - * Function: K_AdjustClock - * - * Description: - * The K_AdjustClock function immediately adjusts the system clock by - * the given number of seconds. A positive number adjusts the system - * clock forward; a negative number adjusts the system clock backward. - * - * Input - * ----- - * i_iAdjustmentInSeconds Number of seconds by which to adjust the - * system clock - * Output - * ------ - * (none) - * - * Return value 1 if successful, 0 on error - * - *--------------------------------------------------------------------------*/ -int K_AdjustClock( long i_iAdjustmentInSeconds ); - - -/*--------------------------------------------------------------------------- - * Function: K_IsLittleEndian - * - * Description: - * Checks to see whether this platform uses little endian integer - * representation. - * - * Input - * ----- - * (none) - * - * Output - * ------ - * (none) - * - * Return value 1 for little endian - * - *--------------------------------------------------------------------------*/ -int K_IsLittleEndian(); - - -/*--------------------------------------------------------------------------- - * Function: K_FileLength32 - * - * Description: - * Gets the size in bytes of the file associated with the given FILE pointer. - * - * Input - * ----- - * i_fpFile File handle - * - * Output - * ------ - * (none) - * - * Return value File size in bytes, or -1L on error - * - *--------------------------------------------------------------------------*/ -long K_FileLength32( FILE* i_fpFile ); - - -/*--------------------------------------------------------------------------- - * Function: K_StringCompareNoCase - * - * Description: - * Compares the two given strings insensitive to case. - * - * Input - * ----- - * i_sString1 First string - * i_sString2 Second string - * - * Output - * ------ - * (none) - * - * Return value 0 if identical, -1 if first string is less than second - * string, or 1 if first string is greater than second - * - *--------------------------------------------------------------------------*/ -int K_StringCompareNoCase( const char* i_sString1, const char* i_sString2 ); - - -/*--------------------------------------------------------------------------- - * Function: K_StringCompareNoCaseWide - * - * Description: - * Compares the two given wide strings insensitive to case. - * - * Input - * ----- - * i_wsString1 First wide string - * i_wsString2 Second wide string - * - * Output - * ------ - * (none) - * - * Return value 0 if identical, -1 if first string is less than second - * string, or 1 if first string is greater than second - * - *--------------------------------------------------------------------------*/ -int K_StringCompareNoCaseWide( const wchar_t* i_wsString1, const wchar_t* i_wsString2 ); - - -/*--------------------------------------------------------------------------- - * Function: K_snprintf - * - * Description: - * See the snprintf(3C) man page. - * - *--------------------------------------------------------------------------*/ -#ifdef WIN32 -#define K_snprintf _snprintf -#else -#define K_snprintf snprintf -#endif - - -/*--------------------------------------------------------------------------- - * Function: K_snwprintf - * - * Description: - * See the swprintf(3C) man page. - * - *--------------------------------------------------------------------------*/ -#ifdef WIN32 -#define K_snwprintf _snwprintf -#else -#define K_snwprintf swprintf -#endif - -#ifdef WIN32 -#define K_fseek fseek -#define K_ftell ftell -#else -#define K_fseek fseeko -#define K_ftell ftello -#endif - - -/*--------------------------------------------------------------------------- - * Function: K_CreateDirectory - * - * Description: - * Creates a directory with the given path name. - * - * Input - * ----- - * i_sDirectoryName Directory name - * - * Output - * ------ - * (none) - * - * Return value 0 on success, -1 on failure - * - *--------------------------------------------------------------------------*/ -int K_CreateDirectory( const char* i_sDirectoryName ); - - -/*--------------------------------------------------------------------------- - * Function: K_DeleteFile - * - * Description: - * Deletes the given file. - * - * Input - * ----- - * i_sFilename Name of file to delete - * - * Output - * ------ - * (none) - * - * Return value 0 on success, errno on failure - * - *--------------------------------------------------------------------------*/ -int K_DeleteFile( const char* i_sFilename ); - - -/*--------------------------------------------------------------------------- - * Function: K_ReadFile - * - * Description: - * Reads from the given file and passes the bytes read back to the output - * parameter. The caller must deallocate o_ppFileData using free(). - * - * Input - * ----- - * i_sFilename Name of file from which to read - * - * Output - * ------ - * o_ppFileData Pointer to bytes read - * - * Return value Number of bytes read on success, -1 on failure - * - *--------------------------------------------------------------------------*/ -int K_ReadFile( const char* i_sFilename, unsigned char** o_ppFileData ); - - -/*--------------------------------------------------------------------------- - * Function: K_ReadFileString - * - * Description: - * Reads from the given file and passes the bytes read back to the output - * parameter, appending these bytes with a null terminator. There is no - * guarantee that there are no non-text characters in the returned "string". - * The caller must deallocate o_ppFileData using free(). - * - * Input - * ----- - * i_sFilename Name of file from which to read - * - * Output - * ------ - * o_psFileDataString Pointer to bytes read - * - * Return value Number of bytes read (including null terminator) on - * success (0 if file is empty), -1 on failure - * - *--------------------------------------------------------------------------*/ -int K_ReadFileString( const char* i_sFilename, char** o_psFileDataString ); - - -/*--------------------------------------------------------------------------- - * Function: K_WriteFile - * - * Description: - * Writes the given bytes to the given file. - * - * Input - * ----- - * i_sFilename Name of file to which to write - * i_pFileData Bytes to write - * i_iFileDataSize Number of bytes to write - * - * Output - * ------ - * (none) - * - * Return value 0 on success, errno or -1 (generic error) on failure - * - *--------------------------------------------------------------------------*/ -int K_WriteFile( const char* i_sFilename, const unsigned char* i_pFileData, int i_iFileDataSize ); - - -/*--------------------------------------------------------------------------- - * Function: K_WriteFileString - * - * Description: - * Writes the given null-terminated bytes to the given file. The null - * terminator itself is not written to the file. - * - * Input - * ----- - * i_sFilename Name of file to which to write - * i_sFileData Bytes to write - * - * Output - * ------ - * (none) - * - * Return value 0 on success, errno or -1 (generic error) on failure - * - *--------------------------------------------------------------------------*/ -int K_WriteFileString( const char* i_sFilename, const char* i_sFileData ); - - -/*--------------------------------------------------------------------------- - * Function: K_FileExists - * - * Description: - * Checks to see whehter the given file exists. - * - * Input - * ----- - * i_sFilename Name of file to check - * - * Output - * ------ - * (none) - * - * Return value 1 if file exists, 0 if not, -1 on failure - * - *--------------------------------------------------------------------------*/ -int K_FileExists( const char* i_sFilename ); - - -/*--------------------------------------------------------------------------- - * Function: K_CopyFile - * - * Description: - * Reads from the given source file and writes these bytes to the given - * destination file. - * - * Input - * ----- - * i_sSrcFilename Name of file from which to read - * i_sDestFilename Name of file to which to write - * - * Output - * ------ - * o_pbFileExists Non-zero if the destination file already exists - * - * Return value 0 on success, errno or -1 (generic error) on failure - * - *--------------------------------------------------------------------------*/ -int K_CopyFile( - const char* i_sSrcFilename, - const char* i_sDestFilename, - int* o_pbFileExists ); - - -/*--------------------------------------------------------------------------- - * Function: K_GetFilenamesInDirectoryCount - * - * Description: - * Reads the given directory and returns the number of files that it contains. - * - * Input - * ----- - * i_sDirectoryName Name of directory - * - * Output - * ------ - * (none) - * - * Return value Number of files on success, -1 on failure - * - *--------------------------------------------------------------------------*/ -int K_GetFilenamesInDirectoryCount( const char* i_sDirectoryName ); - - -/*--------------------------------------------------------------------------- - * Function: K_GetFilenamesInDirectory - * - * Description: - * Reads the given directory and returns an array of names of files that it - * contains. A null pointer appears at the last item in the array. The - * caller must deallocate o_pasFilenames by using K_FreeFilenames or by - * calling free() for each file name and then calling free() on the array - * itself. - * - * Input - * ----- - * i_sDirectoryName Name of directory - * - * Output - * ------ - * o_pasFilenames Array of names of files found in this directory - * - * Return value Number of files on success, -1 on failure - * - *--------------------------------------------------------------------------*/ -int K_GetFilenamesInDirectory( - const char* i_sDirectoryName, - char*** o_pasFilenames ); - - -/*--------------------------------------------------------------------------- - * Function: K_FreeFilenames - * - * Description: - * Deallocates the memory allocated in a successful call to - * K_GetFilenamesInDirectory. - * - * Input - * ----- - * i_asFilenames Array of names of files - * - * Output - * ------ - * (none) - * - * Return value (none) - * - *--------------------------------------------------------------------------*/ -void K_FreeFilenames( char** i_asFilenames ); - - -/*--------------------------------------------------------------------------- - * Function: K_AdjustLocalClock - * - * Description: - * The K_AdjustLocalClock function gradually adjusts the system clock by - * the given number of seconds. A positive number adjusts the system - * clock forward; a negative number adjusts the system clock backward. - * - * Input - * ----- - * i_iAdjustmentInSeconds Number of seconds by which to adjust the - * system clock - * Output - * ------ - * (none) - * - * Return value 1 if successful, 0 on error - * - *--------------------------------------------------------------------------*/ -int K_AdjustLocalClock( int i_iNumberOfSeconds ); - - -/*--------------------------------------------------------------------------- - * Function: K_SetRootPassword - * - * Description: - * The K_SetRootPassword function sets the password for the root user via - * Pluggable Authentication Module (PAM). This function is interactive. - * - * Input - * ----- - * i_sPassword Password to set - * - * Output - * ------ - * (none) - * - * Return value 0 if successful, -1 on error - * - *--------------------------------------------------------------------------*/ -int K_SetRootPassword( const char* i_sPassword ); - - -/*--------------------------------------------------------------------------- - * Function: K_Alarm - * - * Description: - * Calls alarm(2) on Unix in order to cause the operating system to generate - * a SIGALRM signal for this process after the given number of real-time - * seconds. Does nothing on Windows. - * - * Input - * ----- - * i_iSeconds Number of seconds after which to generate a SIGALRM - * signal - * - * Output - * ------ - * (none) - * - * Return value If a previous alarm request is pending, then it returns - * the number of seconds until this previous request would - * have generated a SIGALRM signal. Otherwise, returns 0. - * - *--------------------------------------------------------------------------*/ -unsigned int K_Alarm( unsigned int i_iSeconds ); - - -/*--------------------------------------------------------------------------- - * Function: K_GetExtendedVersionFromBase - * - * Description: - * This KMS-specific function prepends the timestamp value to the specified - * base replication schema version and returns this value as an extended - * replication schema version. - * - * Input - * ----- - * i_iBaseSchemaVersion Base replication schema version - * - * Output - * ------ - * (none) - * - * Return value Extended replication schema version - * - *--------------------------------------------------------------------------*/ -unsigned int K_GetExtendedVersionFromBase( unsigned int i_iBaseSchemaVersion ); - - -/*--------------------------------------------------------------------------- - * Function: K_ParseTimestampFromExtendedVersion - * - * Description: - * This KMS-specific function parses the timestamp value from the given - * extended replication schema version and returns this timestamp value. - * - * Input - * ----- - * i_iExtendedSchemaVersion Extended replication schema version - * - * Output - * ------ - * (none) - * - * Return value Timestamp value - * - *--------------------------------------------------------------------------*/ -unsigned int K_ParseTimestampFromExtendedVersion( - unsigned int i_iExtendedSchemaVersion ); - - -/*--------------------------------------------------------------------------- - * Function: K_ParseBaseFromExtendedVersion - * - * Description: - * This KMS-specific function parses the base replication schema value from - * the given extended replication schema version and returns this base value. - * - * Input - * ----- - * i_iExtendedSchemaVersion Extended replication schema version - * - * Output - * ------ - * (none) - * - * Return value Base replication schema value - * - *--------------------------------------------------------------------------*/ - -unsigned int K_ParseBaseFromExtendedVersion( - unsigned int i_iExtendedSchemaVersion ); - - -/*--------------------------------------------------------------------------- - * Function: K_System - * - * Description: - * This function is a thread-safe replacement for the unsafe system(3C) call. - * See the popen(3C) man page for more information. - * - * Input - * ----- - * i_sCmd Command to execute - * - * Output - * ------ - * (none) - * - * Return value Termination status of the command language interpreter - * if successful, -1 on failure - * - *--------------------------------------------------------------------------*/ - -int K_System( const char *i_sCmd ); - -#define K_system K_System - -#ifdef __cplusplus -} -#endif - -#endif - - diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/ieee80211_crypto.c --- a/usr/src/lib/libkmsagent/common/ieee80211_crypto.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) -#include "rijndael.h" -#else -#include -#include -#endif - -#ifdef METAWARE -#include "sizet.h" -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -#include -#else -#ifndef WIN32 -#include -#endif -#endif - -#include "KMSAgentAESKeyWrap.h" - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifdef WIN32 -#define ovbcopy(x, y, z) memmove(y, x, z); -#else -#define ovbcopy(x, y, z) bcopy(x, y, z); -#endif - -#ifndef K_SOLARIS_PLATFORM -/* similar to iovec except that it accepts const pointers */ -struct vector { - const void *base; - size_t len; -}; - -#ifdef METAWARE -#define bcopy(s1, s2, n) memcpy(s2, s1, n) -#endif - -/* - * AES Key Wrap (see RFC 3394). - */ -#endif /* K_SOLARIS_PLATFORM */ - -static const uint8_t aes_key_wrap_iv[8] = - { 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6 }; - -void aes_key_wrap (const uint8_t *kek, - size_t kek_len, - const uint8_t *pt, - size_t len, - uint8_t *ct) -{ -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) - rijndael_ctx ctx; -#else - void *ks; - size_t ks_size; -#endif - uint8_t *a, *r, ar[16], t, b[16]; - size_t i; - int j; - - /* - * Only allow lengths for 't' values that fit within a byte. This - * covers all reasonable uses of AES Key Wrap - */ - if (len > (255 / 6)) { - return; - } - - /* allow ciphertext and plaintext to overlap (ct == pt) */ - ovbcopy(pt, ct + 8, len * 8); - - a = ct; - memcpy(a, aes_key_wrap_iv, 8); /* default IV */ - -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) - rijndael_set_key_enc_only(&ctx, (uint8_t *)kek, kek_len * 8); -#else - ks = aes_alloc_keysched(&ks_size, 0); - if (ks == NULL) - return; - aes_init_keysched(kek, kek_len * 8, ks); -#endif - - for (j = 0, t = 1; j < 6; j++) { - r = ct + 8; - for (i = 0; i < len; i++, t++) { - memcpy(ar, a, 8); - memcpy(ar + 8, r, 8); -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) - rijndael_encrypt(&ctx, ar, b); -#else - (void) aes_encrypt_block(ks, ar, b); -#endif - - b[7] ^= t; - memcpy(a, &b[0], 8); - memcpy(r, &b[8], 8); - - r += 8; - } - } -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) - free(ks); -#endif -} - -int aes_key_unwrap (const uint8_t *kek, - size_t kek_len, - const uint8_t *ct, - uint8_t *pt, - size_t len) -{ -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) - rijndael_ctx ctx; -#else - void *ks; - size_t ks_size; -#endif - uint8_t a[8], *r, b[16], t, ar[16]; - size_t i; - int j; - - /* - * Only allow lengths for 't' values that fit within a byte. This - * covers all reasonable uses of AES Key Wrap - */ - if (len > (255 / 6)) { - return (-1); - } - - memcpy(a, ct, 8); - /* allow ciphertext and plaintext to overlap (ct == pt) */ - ovbcopy(ct + 8, pt, len * 8); - -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) - rijndael_set_key(&ctx, (uint8_t *)kek, kek_len * 8); -#else - ks = aes_alloc_keysched(&ks_size, 0); - if (ks == NULL) - return (-1); - aes_init_keysched(kek, kek_len * 8, ks); -#endif - - for (j = 0, t = 6 * len; j < 6; j++) { - r = pt + (len - 1) * 8; - for (i = 0; i < len; i++, t--) { - memcpy(&ar[0], a, 8); - ar[7] ^= t; - memcpy(&ar[8], r, 8); -#if !defined(K_SOLARIS_PLATFORM) || defined(SOLARIS10) - rijndael_decrypt(&ctx, ar, b); -#else - (void) aes_decrypt_block(ks, ar, b); -#endif - memcpy(a, b, 8); - memcpy(r, b + 8, 8); - r -= 8; - } - } -#if defined(K_SOLARIS_PLATFORM) && !defined(SOLARIS10) - free(ks); -#endif - - return memcmp(a, aes_key_wrap_iv, 8) != 0; -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/k_setupssl.c --- a/usr/src/lib/libkmsagent/common/k_setupssl.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,223 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*--------------------------------------------------------------------------- - * Module: k_setupssl.c - * Operating System: Linux, Win32 - * - * Description: - * This is the C Implementation file for setting up OpenSSL muti-threading environment - * - *-------------------------------------------------------------------------*/ - -#ifndef WIN32 -#include -#include /* UNIX */ -#include -#endif - -#include "k_setupssl.h" -#include "stdsoap2.h" -#include - -#if defined(WIN32) - -#include -#define MUTEX_TYPE HANDLE -#define MUTEX_SETUP(x) (x) = CreateMutex(NULL, FALSE, NULL) -#define MUTEX_CLEANUP(x) CloseHandle(x) -#define MUTEX_LOCK(x) WaitForSingleObject((x), INFINITE) -#define MUTEX_UNLOCK(x) ReleaseMutex(x) -#define THREAD_ID GetCurrentThreadId() - -#else - -#include - -# define MUTEX_TYPE pthread_mutex_t -# define MUTEX_SETUP(x) pthread_mutex_init(&(x), NULL) -# define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x)) -# define MUTEX_LOCK(x) pthread_mutex_lock(&(x)) -# define MUTEX_UNLOCK(x) pthread_mutex_unlock(&(x)) -# define THREAD_ID pthread_self() - -#ifdef K_SOLARIS_PLATFORM -MUTEX_TYPE init_ssl_mutex = PTHREAD_MUTEX_INITIALIZER; -static int ssl_initialized = 0; -#endif -#endif - -struct CRYPTO_dynlock_value -{ MUTEX_TYPE mutex; -}; - -void sigpipe_handle(int x) -{ -} - -static MUTEX_TYPE *mutex_buf; - -static struct CRYPTO_dynlock_value *dyn_create_function(const char *file, int line) -{ struct CRYPTO_dynlock_value *value; - value = (struct CRYPTO_dynlock_value*)malloc(sizeof(struct CRYPTO_dynlock_value)); - if (value) - MUTEX_SETUP(value->mutex); - return value; -} - -static void dyn_lock_function(int mode, struct CRYPTO_dynlock_value *l, const char *file, int line) -{ if (mode & CRYPTO_LOCK) - MUTEX_LOCK(l->mutex); - else - MUTEX_UNLOCK(l->mutex); -} - -static void dyn_destroy_function(struct CRYPTO_dynlock_value *l, const char *file, int line) -{ MUTEX_CLEANUP(l->mutex); - free(l); -} - -void kms_locking_function(int mode, int n, const char *file, int line) -{ if (mode & CRYPTO_LOCK) - MUTEX_LOCK(mutex_buf[n]); - else - MUTEX_UNLOCK(mutex_buf[n]); -} - - -unsigned long id_function(void ) -{ return (unsigned long)THREAD_ID; -} - -#ifdef WIN32 -void OpenSSL_add_all_ciphers(void); // UNIX -void OpenSSL_add_all_digests(void); -#endif - -#ifdef K_HPUX_PLATFORM -extern void allow_unaligned_data_access(); -#endif - -// gSOAP 2.7e: -// The function ssl_init is defined in stdsoap2.cpp and is not exported by -// default by gSOAP. -// gSOAP 2.7.12: -// The function soap_ssl_init is defined in stdsoap2.cpp. It replaces -// ssl_init and is exported by gSOAP. gSOAP 2.7.13 also supports a new -// SOAP_SSL_SKIP_HOST_CHECK flag. -#ifndef SOAP_SSL_SKIP_HOST_CHECK -extern int ssl_init(); -#endif - -int K_SetupSSL() -{ int i; -#ifdef K_SOLARIS_PLATFORM - if (ssl_initialized) - return 1; - MUTEX_LOCK(init_ssl_mutex); -#endif - mutex_buf = (MUTEX_TYPE*)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE)); - if (!mutex_buf) { -#ifdef K_SOLARIS_PLATFORM - MUTEX_UNLOCK(init_ssl_mutex); -#endif - return 0; - } - for (i = 0; i < CRYPTO_num_locks(); i++) - MUTEX_SETUP(mutex_buf[i]); - if (CRYPTO_get_id_callback() == NULL) - CRYPTO_set_id_callback(id_function); - if (CRYPTO_get_locking_callback() == NULL) - CRYPTO_set_locking_callback(kms_locking_function); - - CRYPTO_set_dynlock_create_callback(dyn_create_function); - CRYPTO_set_dynlock_lock_callback(dyn_lock_function); - CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function); - -#ifndef WIN32 - /* Need SIGPIPE handler on Unix/Linux systems to catch broken pipes: */ - signal(SIGPIPE, sigpipe_handle); -#endif -#ifdef K_HPUX_PLATFORM -// signal(SIGBUS, sigpipe_handle); - allow_unaligned_data_access(); -#endif - OpenSSL_add_all_ciphers(); - OpenSSL_add_all_digests(); - - // call gSOAP's OpenSSL initialization, which initializes SSL algorithms and seeds RAND - - // gSOAP 2.7e: - // The function ssl_init is defined in stdsoap2.cpp and is not exported by - // default by gSOAP. - // gSOAP 2.7.13: - // The function soap_ssl_init is defined in stdsoap2.cpp. It replaces - // ssl_init and is exported by gSOAP. gSOAP 2.7.13 also supports a new - // SOAP_SSL_SKIP_HOST_CHECK flag. -#ifdef SOAP_SSL_SKIP_HOST_CHECK - soap_ssl_init(); -#else - ssl_init(); -#endif - -#ifdef K_SOLARIS_PLATFORM - ssl_initialized = 1; - MUTEX_UNLOCK(init_ssl_mutex); -#endif - - return 1; -} - -void K_CleanupSSL() -{ int i; - if (!mutex_buf) - return; -#ifdef K_SOLARIS_PLATFORM - { - unsigned long (*id_func)(); - - if ((id_func = CRYPTO_get_id_callback()) == id_function) { - ENGINE_cleanup(); - /* EVP_cleanup(); */ - ERR_free_strings(); - CRYPTO_set_id_callback(NULL); - CRYPTO_set_locking_callback(NULL); - } - } -#endif - CRYPTO_set_dynlock_create_callback(NULL); - CRYPTO_set_dynlock_lock_callback(NULL); - CRYPTO_set_dynlock_destroy_callback(NULL); - for (i = 0; i < CRYPTO_num_locks(); i++) - MUTEX_CLEANUP(mutex_buf[i]); - OPENSSL_free(mutex_buf); - mutex_buf = NULL; -} - -// TODO: what should 'struct soap' really be? -int K_SetupCallbacks( struct soap *i_pSoap ) -{ - return 1; -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/k_setupssl.h --- a/usr/src/lib/libkmsagent/common/k_setupssl.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -/*--------------------------------------------------------------------------- - * Module: k_setupssl.h - * Operating System: Linux, Win32 - * - * Description: - * This is the header file of setting up OpenSSL - */ - -#ifndef _K_SETUP_SSL_H -#define _K_SETUP_SSL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef METAWARE -#include "stdsoap2.h" -/** - * set up gSoap I/O callback functions for environments that need to customize - * the I/O functions, e.g. embedded agents. - */ -int K_SetupCallbacks( struct soap *i_pSoap ); - -int K_ssl_client_context(struct soap *i_pSoap, - int flags, - const char *keyfile, /* NULL - SERVER */ - const char *password, /* NULL - SERVER */ - const char *cafile, - const char *capath, /* ALWAYS NULL */ - const char *randfile); -#endif - - -int K_SetupSSL(); -void K_CleanupSSL(); - -#ifdef __cplusplus -} -#endif - -#endif diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/common/mapfile-vers --- a/usr/src/lib/libkmsagent/common/mapfile-vers Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - -$mapfile_version 2 - -SYMBOL_VERSION SUNWprivate { - global: - KMSAgent_CreateDataUnit; - KMSAgent_CreateKey; - KMSAgent_DisassociateDataUnitKeys; - KMSAgent_FinalizeLibrary; - KMSAgent_FreeArrayOfKeys; - KMSAgent_InitializeLibrary; - KMSAgent_LoadProfile; - KMSAgent_RetrieveDataUnit; - KMSAgent_RetrieveDataUnitByExternalUniqueID; - KMSAgent_RetrieveDataUnitKeys; - KMSAgent_UnloadProfile; - KMSAgent_ChangeLocalPWD; - KMSAgent_GetProfileStatus; - local: - *; -}; diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/i386/Makefile --- a/usr/src/lib/libkmsagent/i386/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com - -install: all $(ROOTLIBS) $(ROOTLINKS) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/sparc/Makefile --- a/usr/src/lib/libkmsagent/sparc/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com -sparc_C_PICFLAGS = -KPIC -sparc_CC_PICFLAGS = -KPIC - -install: all $(ROOTLIBS) $(ROOTLINKS) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/libkmsagent/sparcv9/Makefile --- a/usr/src/lib/libkmsagent/sparcv9/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com -include $(SRC)/lib/Makefile.lib.64 - -# -# CCNEEDED must be modified for 64-bit because the default only includes -# -lCrun -# -CCNEEDED = -lCstd -lCrun - -# -# If linking with gcc, we must fix the CCNEEDED and LDLIBS64 -# to get a clean link without duplicates. -# -$(__GNUC)CCNEEDED = -L$(SFWLIBDIR) -R$(SFWLIBDIR) -lstdc++ -lgcc_s -$(__GNUC)LDLIBS64 += $(CCNEEDED) - -install: all $(ROOTLIBS64) $(ROOTLINKS64) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/Makefile --- a/usr/src/lib/pkcs11/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ b/usr/src/lib/pkcs11/Makefile Thu Feb 02 20:16:51 2012 +1100 @@ -36,7 +36,6 @@ libsoftcrypto \ libkcfd \ pkcs11_kernel \ - pkcs11_kms \ pkcs11_softtoken \ pkcs11_tpm diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/Makefile --- a/usr/src/lib/pkcs11/pkcs11_kms/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - -include $(SRC)/lib/Makefile.lib - -SUBDIRS = $(MACH) -$(BUILD64)SUBDIRS += $(MACH64) - -all := TARGET= all -check := TARGET= check -clean := TARGET= clean -clobber := TARGET= clobber -install := TARGET= install -lint := TARGET= lint - -.KEEP_STATE: - -all clean clobber install lint: $(SUBDIRS) - -$(SUBDIRS): FRC - @cd $@; pwd; $(MAKE) $(TARGET) - -FRC: diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/Makefile.com --- a/usr/src/lib/pkcs11/pkcs11_kms/Makefile.com Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. -# - -LIBRARY= pkcs11_kms.a -VERS= .1 - -CORE_OBJECTS= \ - kmsAESCrypt.o \ - kmsAttributeUtil.o \ - kmsDecrypt.o \ - kmsDigest.o \ - kmsDualCrypt.o \ - kmsEncrypt.o \ - kmsGeneral.o \ - kmsKeys.o \ - kmsKeystoreUtil.o \ - kmsObject.o \ - kmsObjectUtil.o \ - kmsRand.o \ - kmsSession.o \ - kmsSessionUtil.o \ - kmsSign.o \ - kmsSlottable.o \ - kmsSlotToken.o \ - kmsVerify.o - -OBJECTS= $(CORE_OBJECTS) - -AESDIR= $(SRC)/common/crypto/aes -KMSAGENTDIR= $(SRC)/lib/libkmsagent/common - -include $(SRC)/lib/Makefile.lib - -# set signing mode -POST_PROCESS_SO += ; $(ELFSIGN_CRYPTO) - -SRCDIR= ../common -CORESRCS = $(CORE_OBJECTS:%.o=$(SRCDIR)/%.c) - -LIBS = $(DYNLIB) -LDLIBS += -lc -lcryptoutil -lsoftcrypto -lmd -lavl -lkmsagent - -CFLAGS += $(CCVERBOSE) - -CPPFLAGS += -DUSESOLARIS_AES -DKMSUSERPKCS12 - -ROOTLIBDIR= $(ROOT)/usr/lib/security -ROOTLIBDIR64= $(ROOT)/usr/lib/security/$(MACH64) - -lint \ -pics/kmsAESCrypt.o \ -pics/kmsEncrypt.o \ -pics/kmsDecrypt.o \ -pics/kmsSlotToken.o \ -pics/kmsKeystoreUtil.o \ -pics/kmsAttributeUtil.o := CPPFLAGS += -I$(AESDIR) -I$(SRC)/common/crypto - -CPPFLAGS += -I$(KMSAGENTDIR) - -.KEEP_STATE: - -all: $(LIBS) - -# -# -lkmsagent is not here because it is C++ and we don't lint C++ code. -# -LINTLDLIBS = -lc -lcryptoutil -lavl -lmd -lsoftcrypto - -LINTFLAGS64 += -errchk=longptr64 -errtags=yes - -lintcheck := SRCS = $(CORESRCS) -lintcheck := LDLIBS = -L$(ROOT)/lib -L$(ROOT)/usr/lib $(LINTLDLIBS) - -lintother: $$(OSRCS) - $(LINT.c) $(LINTCHECKFLAGS) $(OSRCS) $(LINTLDLIBS) - -lint: lintcheck - -include $(SRC)/lib/Makefile.targ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/amd64/Makefile --- a/usr/src/lib/pkcs11/pkcs11_kms/amd64/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com -include ../../../Makefile.lib.64 - -LINTCHECKFLAGS += -erroff=E_INCONS_ARG_DECL2 \ - -erroff=E_INCONS_ARG_USED2 \ - -erroff=E_INCONS_VAL_TYPE_DECL2 \ - -erroff=E_INCONS_VAL_TYPE_USED2 \ - -erroff=E_FUNC_DECL_VAR_ARG2 - -install: all $(ROOTLIBS64) $(ROOTLINKS64) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsAESCrypt.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsAESCrypt.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1046 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "kmsSession.h" -#include "kmsObject.h" -#include "kmsCrypt.h" - -/* - * Add padding bytes with the value of length of padding. - */ -static void -kms_add_pkcs7_padding(CK_BYTE *buf, int block_size, CK_ULONG data_len) -{ - - ulong_t i, pad_len; - CK_BYTE pad_value; - - pad_len = block_size - (data_len % block_size); - pad_value = (CK_BYTE)pad_len; - - for (i = 0; i < pad_len; i++) - buf[i] = pad_value; -} - -/* - * Remove padding bytes. - */ -static CK_RV -kms_remove_pkcs7_padding(CK_BYTE *pData, CK_ULONG padded_len, - CK_ULONG *pulDataLen, int block_size) -{ - - CK_BYTE pad_value; - ulong_t i; - - pad_value = pData[padded_len - 1]; - - - /* Make sure there is a valid padding value. */ - if ((pad_value == 0) || (pad_value > block_size)) - return (CKR_ENCRYPTED_DATA_INVALID); - - for (i = padded_len - pad_value; i < padded_len; i++) - if (pad_value != pData[i]) - return (CKR_ENCRYPTED_DATA_INVALID); - - *pulDataLen = padded_len - pad_value; - return (CKR_OK); -} - -/* - * Allocate context for the active encryption or decryption operation, and - * generate AES key schedule to speed up the operation. - */ -CK_RV -kms_aes_crypt_init_common(kms_session_t *session_p, - CK_MECHANISM_PTR pMechanism, kms_object_t *key_p, - boolean_t encrypt) -{ - size_t size; - kms_aes_ctx_t *kms_aes_ctx; - - kms_aes_ctx = calloc(1, sizeof (kms_aes_ctx_t)); - if (kms_aes_ctx == NULL) { - return (CKR_HOST_MEMORY); - } - - kms_aes_ctx->key_sched = aes_alloc_keysched(&size, 0); - - if (kms_aes_ctx->key_sched == NULL) { - free(kms_aes_ctx); - return (CKR_HOST_MEMORY); - } - - kms_aes_ctx->keysched_len = size; - - (void) pthread_mutex_lock(&session_p->session_mutex); - if (encrypt) { - /* Called by C_EncryptInit. */ - session_p->encrypt.context = kms_aes_ctx; - session_p->encrypt.mech.mechanism = pMechanism->mechanism; - } else { - /* Called by C_DecryptInit. */ - session_p->decrypt.context = kms_aes_ctx; - session_p->decrypt.mech.mechanism = pMechanism->mechanism; - } - (void) pthread_mutex_unlock(&session_p->session_mutex); - - /* - * If this is a non-sensitive key and it does NOT have - * a key schedule yet, then allocate one and expand it. - * Otherwise, if it's a non-sensitive key, and it DOES have - * a key schedule already attached to it, just copy the - * pre-expanded schedule to the context and avoid the - * extra key schedule expansion operation. - */ - if (!(key_p->bool_attr_mask & SENSITIVE_BOOL_ON)) { - if (OBJ_KEY_SCHED(key_p) == NULL) { - void *ks; - - (void) pthread_mutex_lock(&key_p->object_mutex); - if (OBJ_KEY_SCHED(key_p) == NULL) { - ks = aes_alloc_keysched(&size, 0); - if (ks == NULL) { - (void) pthread_mutex_unlock( - &key_p->object_mutex); - free(kms_aes_ctx); - return (CKR_HOST_MEMORY); - } -#ifdef __sparcv9 - /* LINTED */ - aes_init_keysched(OBJ_SEC_VALUE(key_p), (uint_t) - (OBJ_SEC_VALUE_LEN(key_p) * 8), ks); -#else /* !__sparcv9 */ - aes_init_keysched(OBJ_SEC_VALUE(key_p), - (OBJ_SEC_VALUE_LEN(key_p) * 8), ks); -#endif /* __sparcv9 */ - OBJ_KEY_SCHED_LEN(key_p) = size; - OBJ_KEY_SCHED(key_p) = ks; - } - (void) pthread_mutex_unlock(&key_p->object_mutex); - } - (void) memcpy(kms_aes_ctx->key_sched, OBJ_KEY_SCHED(key_p), - OBJ_KEY_SCHED_LEN(key_p)); - kms_aes_ctx->keysched_len = OBJ_KEY_SCHED_LEN(key_p); - } else { - /* - * Initialize key schedule for AES. aes_init_keysched() - * requires key length in bits. - */ -#ifdef __sparcv9 - /* LINTED */ - aes_init_keysched(OBJ_SEC_VALUE(key_p), (uint_t) - (OBJ_SEC_VALUE_LEN(key_p) * 8), kms_aes_ctx->key_sched); -#else /* !__sparcv9 */ - aes_init_keysched(OBJ_SEC_VALUE(key_p), - (OBJ_SEC_VALUE_LEN(key_p) * 8), kms_aes_ctx->key_sched); -#endif /* __sparcv9 */ - } - return (CKR_OK); -} - -/* - * kms_aes_encrypt_common() - * - * Arguments: - * session_p: pointer to kms_session_t struct - * pData: pointer to the input data to be encrypted - * ulDataLen: length of the input data - * pEncrypted: pointer to the output data after encryption - * pulEncryptedLen: pointer to the length of the output data - * update: boolean flag indicates caller is kms_encrypt - * or kms_encrypt_update - * - * Description: - * This function calls the corresponding encrypt routine based - * on the mechanism. - * - * Returns: - * CKR_OK: success - * CKR_BUFFER_TOO_SMALL: the output buffer provided by application - * is too small - * CKR_FUNCTION_FAILED: encrypt function failed - * CKR_DATA_LEN_RANGE: the input data is not a multiple of blocksize - */ -CK_RV -kms_aes_encrypt_common(kms_session_t *session_p, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pEncrypted, - CK_ULONG_PTR pulEncryptedLen, boolean_t update) -{ - - int rc = 0; - CK_RV rv = CKR_OK; - kms_aes_ctx_t *kms_aes_ctx = - (kms_aes_ctx_t *)session_p->encrypt.context; - aes_ctx_t *aes_ctx; - CK_MECHANISM_TYPE mechanism = session_p->encrypt.mech.mechanism; - CK_BYTE *in_buf = NULL; - CK_BYTE *out_buf = NULL; - CK_ULONG out_len; - CK_ULONG total_len; - CK_ULONG remain; - - if (mechanism == CKM_AES_CTR) - goto do_encryption; - - /* - * AES only takes input length that is a multiple of blocksize - * for C_Encrypt function with the mechanism CKM_AES_ECB or - * CKM_AES_CBC. - * - * AES allows any input length for C_Encrypt function with the - * mechanism CKM_AES_CBC_PAD and for C_EncryptUpdate function. - */ - if ((!update) && (mechanism != CKM_AES_CBC_PAD)) { - if ((ulDataLen % AES_BLOCK_LEN) != 0) { - rv = CKR_DATA_LEN_RANGE; - goto cleanup; - } - } - - if (!update) { - /* - * Called by C_Encrypt - */ - if (mechanism == CKM_AES_CBC_PAD) { - /* - * For CKM_AES_CBC_PAD, compute output length to - * count for the padding. If the length of input - * data is a multiple of blocksize, then make output - * length to be the sum of the input length and - * one blocksize. Otherwise, output length will - * be rounded up to the next multiple of blocksize. - */ - out_len = AES_BLOCK_LEN * - (ulDataLen / AES_BLOCK_LEN + 1); - } else { - /* - * For non-padding mode, the output length will - * be same as the input length. - */ - out_len = ulDataLen; - } - - /* - * If application asks for the length of the output buffer - * to hold the ciphertext? - */ - if (pEncrypted == NULL) { - *pulEncryptedLen = out_len; - return (CKR_OK); - } - - /* Is the application-supplied buffer large enough? */ - if (*pulEncryptedLen < out_len) { - *pulEncryptedLen = out_len; - return (CKR_BUFFER_TOO_SMALL); - } - - /* Encrypt pad bytes in a separate operation */ - if (mechanism == CKM_AES_CBC_PAD) { - out_len -= AES_BLOCK_LEN; - } - - in_buf = pData; - out_buf = pEncrypted; - } else { - /* - * Called by C_EncryptUpdate - * - * Add the lengths of last remaining data and current - * plaintext together to get the total input length. - */ - total_len = kms_aes_ctx->remain_len + ulDataLen; - - /* - * If the total input length is less than one blocksize, - * or if the total input length is just one blocksize and - * the mechanism is CKM_AES_CBC_PAD, we will need to delay - * encryption until when more data comes in next - * C_EncryptUpdate or when C_EncryptFinal is called. - */ - if ((total_len < AES_BLOCK_LEN) || - ((mechanism == CKM_AES_CBC_PAD) && - (total_len == AES_BLOCK_LEN))) { - if (pEncrypted != NULL) { - /* - * Save input data and its length in - * the remaining buffer of AES context. - */ - (void) memcpy(kms_aes_ctx->data + - kms_aes_ctx->remain_len, pData, ulDataLen); - kms_aes_ctx->remain_len += ulDataLen; - } - - /* Set encrypted data length to 0. */ - *pulEncryptedLen = 0; - return (CKR_OK); - } - - /* Compute the length of remaing data. */ - remain = total_len % AES_BLOCK_LEN; - - /* - * Make sure that the output length is a multiple of - * blocksize. - */ - out_len = total_len - remain; - - /* - * If application asks for the length of the output buffer - * to hold the ciphertext? - */ - if (pEncrypted == NULL) { - *pulEncryptedLen = out_len; - return (CKR_OK); - } - - /* Is the application-supplied buffer large enough? */ - if (*pulEncryptedLen < out_len) { - *pulEncryptedLen = out_len; - return (CKR_BUFFER_TOO_SMALL); - } - - if (kms_aes_ctx->remain_len != 0) { - /* - * Copy last remaining data and current input data - * to the output buffer. - */ - (void) memmove(pEncrypted + kms_aes_ctx->remain_len, - pData, out_len - kms_aes_ctx->remain_len); - (void) memcpy(pEncrypted, kms_aes_ctx->data, - kms_aes_ctx->remain_len); - bzero(kms_aes_ctx->data, kms_aes_ctx->remain_len); - - in_buf = pEncrypted; - } else { - in_buf = pData; - } - out_buf = pEncrypted; - } - -do_encryption: - /* - * Begin Encryption now. - */ - switch (mechanism) { - - case CKM_AES_CBC: - case CKM_AES_CBC_PAD: - { - crypto_data_t out; - - out.cd_format = CRYPTO_DATA_RAW; - out.cd_offset = 0; - out.cd_length = out_len; - out.cd_raw.iov_base = (char *)out_buf; - out.cd_raw.iov_len = out_len; - - /* Encrypt multiple blocks of data. */ - rc = aes_encrypt_contiguous_blocks( - (aes_ctx_t *)kms_aes_ctx->aes_cbc, - (char *)in_buf, out_len, &out); - - if (rc != 0) - goto encrypt_failed; - - if (update) { - /* - * For encrypt update, if there is remaining data, - * save it and its length in the context. - */ - if (remain != 0) - (void) memcpy(kms_aes_ctx->data, pData + - (ulDataLen - remain), remain); - kms_aes_ctx->remain_len = remain; - } else if (mechanism == CKM_AES_CBC_PAD) { - /* - * Save the remainder of the input - * block in a temporary block because - * we dont want to overrun the buffer - * by tacking on pad bytes. - */ - CK_BYTE tmpblock[AES_BLOCK_LEN]; - (void) memcpy(tmpblock, in_buf + out_len, - ulDataLen - out_len); - kms_add_pkcs7_padding(tmpblock + - (ulDataLen - out_len), - AES_BLOCK_LEN, ulDataLen - out_len); - - out.cd_offset = out_len; - out.cd_length = AES_BLOCK_LEN; - out.cd_raw.iov_base = (char *)out_buf; - out.cd_raw.iov_len = out_len + AES_BLOCK_LEN; - - /* Encrypt last block containing pad bytes. */ - rc = aes_encrypt_contiguous_blocks( - (aes_ctx_t *)kms_aes_ctx->aes_cbc, - (char *)tmpblock, AES_BLOCK_LEN, &out); - - out_len += AES_BLOCK_LEN; - } - - if (rc == 0) { - *pulEncryptedLen = out_len; - break; - } -encrypt_failed: - *pulEncryptedLen = 0; - rv = CKR_FUNCTION_FAILED; - goto cleanup; - } - default: - rv = CKR_MECHANISM_INVALID; - goto cleanup; - } /* end switch */ - - if (update) - return (CKR_OK); - - /* - * The following code will be executed if the caller is - * kms_encrypt() or an error occurred. The encryption - * operation will be terminated so we need to do some cleanup. - */ -cleanup: - (void) pthread_mutex_lock(&session_p->session_mutex); - aes_ctx = (aes_ctx_t *)kms_aes_ctx->aes_cbc; - if (aes_ctx != NULL) { - bzero(aes_ctx->ac_keysched, aes_ctx->ac_keysched_len); - free(kms_aes_ctx->aes_cbc); - } - - bzero(kms_aes_ctx->key_sched, kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - free(session_p->encrypt.context); - session_p->encrypt.context = NULL; - (void) pthread_mutex_unlock(&session_p->session_mutex); - - return (rv); -} - - -/* - * kms_aes_decrypt_common() - * - * Arguments: - * session_p: pointer to kms_session_t struct - * pEncrypted: pointer to the input data to be decrypted - * ulEncryptedLen: length of the input data - * pData: pointer to the output data - * pulDataLen: pointer to the length of the output data - * Update: boolean flag indicates caller is kms_decrypt - * or kms_decrypt_update - * - * Description: - * This function calls the corresponding decrypt routine based - * on the mechanism. - * - * Returns: - * CKR_OK: success - * CKR_BUFFER_TOO_SMALL: the output buffer provided by application - * is too small - * CKR_ENCRYPTED_DATA_LEN_RANGE: the input data is not a multiple - * of blocksize - * CKR_FUNCTION_FAILED: decrypt function failed - */ -CK_RV -kms_aes_decrypt_common(kms_session_t *session_p, CK_BYTE_PTR pEncrypted, - CK_ULONG ulEncryptedLen, CK_BYTE_PTR pData, - CK_ULONG_PTR pulDataLen, boolean_t update) -{ - - int rc = 0; - CK_RV rv = CKR_OK; - kms_aes_ctx_t *kms_aes_ctx = - (kms_aes_ctx_t *)session_p->decrypt.context; - aes_ctx_t *aes_ctx; - CK_MECHANISM_TYPE mechanism = session_p->decrypt.mech.mechanism; - CK_BYTE *in_buf = NULL; - CK_BYTE *out_buf = NULL; - CK_ULONG out_len; - CK_ULONG total_len; - CK_ULONG remain; - - if (mechanism == CKM_AES_CTR) - goto do_decryption; - - /* - * AES only takes input length that is a multiple of 16 bytes - * for C_Decrypt function with the mechanism CKM_AES_ECB, - * CKM_AES_CBC or CKM_AES_CBC_PAD. - * - * AES allows any input length for C_DecryptUpdate function. - */ - if (!update) { - /* - * Called by C_Decrypt - */ - if ((ulEncryptedLen % AES_BLOCK_LEN) != 0) { - rv = CKR_ENCRYPTED_DATA_LEN_RANGE; - goto cleanup; - } - - /* - * If application asks for the length of the output buffer - * to hold the plaintext? - */ - if (pData == NULL) { - *pulDataLen = ulEncryptedLen; - return (CKR_OK); - } - - /* Is the application-supplied buffer large enough? */ - if (mechanism != CKM_AES_CBC_PAD) { - if (*pulDataLen < ulEncryptedLen) { - *pulDataLen = ulEncryptedLen; - return (CKR_BUFFER_TOO_SMALL); - } - out_len = ulEncryptedLen; - } else { - /* - * For CKM_AES_CBC_PAD, we don't know how - * many bytes for padding at this time, so - * we'd assume one block was padded. - */ - if (*pulDataLen < (ulEncryptedLen - AES_BLOCK_LEN)) { - *pulDataLen = ulEncryptedLen - AES_BLOCK_LEN; - return (CKR_BUFFER_TOO_SMALL); - } - out_len = ulEncryptedLen - AES_BLOCK_LEN; - } - in_buf = pEncrypted; - out_buf = pData; - } else { - /* - * Called by C_DecryptUpdate - * - * Add the lengths of last remaining data and current - * input data together to get the total input length. - */ - total_len = kms_aes_ctx->remain_len + ulEncryptedLen; - - /* - * If the total input length is less than one blocksize, - * or if the total input length is just one blocksize and - * the mechanism is CKM_AES_CBC_PAD, we will need to delay - * decryption until when more data comes in next - * C_DecryptUpdate or when C_DecryptFinal is called. - */ - if ((total_len < AES_BLOCK_LEN) || - ((mechanism == CKM_AES_CBC_PAD) && - (total_len == AES_BLOCK_LEN))) { - if (pData != NULL) { - /* - * Save input data and its length in - * the remaining buffer of AES context. - */ - (void) memcpy(kms_aes_ctx->data + - kms_aes_ctx->remain_len, - pEncrypted, ulEncryptedLen); - kms_aes_ctx->remain_len += ulEncryptedLen; - } - - /* Set output data length to 0. */ - *pulDataLen = 0; - return (CKR_OK); - } - - /* Compute the length of remaing data. */ - remain = total_len % AES_BLOCK_LEN; - - /* - * Make sure that the output length is a multiple of - * blocksize. - */ - out_len = total_len - remain; - - if (mechanism == CKM_AES_CBC_PAD) { - /* - * If the input data length is a multiple of - * blocksize, then save the last block of input - * data in the remaining buffer. C_DecryptFinal - * will handle this last block of data. - */ - if (remain == 0) { - remain = AES_BLOCK_LEN; - out_len -= AES_BLOCK_LEN; - } - } - - /* - * If application asks for the length of the output buffer - * to hold the plaintext? - */ - if (pData == NULL) { - *pulDataLen = out_len; - return (CKR_OK); - } - - /* - * Is the application-supplied buffer large enough? - */ - if (*pulDataLen < out_len) { - *pulDataLen = out_len; - return (CKR_BUFFER_TOO_SMALL); - } - - if (kms_aes_ctx->remain_len != 0) { - /* - * Copy last remaining data and current input data - * to the output buffer. - */ - (void) memmove(pData + kms_aes_ctx->remain_len, - pEncrypted, out_len - kms_aes_ctx->remain_len); - (void) memcpy(pData, kms_aes_ctx->data, - kms_aes_ctx->remain_len); - bzero(kms_aes_ctx->data, kms_aes_ctx->remain_len); - - in_buf = pData; - } else { - in_buf = pEncrypted; - } - out_buf = pData; - } - -do_decryption: - /* - * Begin Decryption. - */ - switch (mechanism) { - case CKM_AES_CBC: - case CKM_AES_CBC_PAD: - { - crypto_data_t out; - CK_ULONG rem_len; - uint8_t last_block[AES_BLOCK_LEN]; - - out.cd_format = CRYPTO_DATA_RAW; - out.cd_offset = 0; - out.cd_length = out_len; - out.cd_raw.iov_base = (char *)out_buf; - out.cd_raw.iov_len = out_len; - - /* Decrypt multiple blocks of data. */ - rc = aes_decrypt_contiguous_blocks( - (aes_ctx_t *)kms_aes_ctx->aes_cbc, - (char *)in_buf, out_len, &out); - - if (rc != 0) - goto decrypt_failed; - - if ((mechanism == CKM_AES_CBC_PAD) && (!update)) { - /* Decrypt last block containing pad bytes. */ - out.cd_offset = 0; - out.cd_length = AES_BLOCK_LEN; - out.cd_raw.iov_base = (char *)last_block; - out.cd_raw.iov_len = AES_BLOCK_LEN; - - /* Decrypt last block containing pad bytes. */ - rc = aes_decrypt_contiguous_blocks( - (aes_ctx_t *)kms_aes_ctx->aes_cbc, - (char *)in_buf + out_len, AES_BLOCK_LEN, &out); - - if (rc != 0) - goto decrypt_failed; - - /* - * Remove padding bytes after decryption of - * ciphertext block to produce the original - * plaintext. - */ - rv = kms_remove_pkcs7_padding(last_block, - AES_BLOCK_LEN, &rem_len, AES_BLOCK_LEN); - if (rv == CKR_OK) { - if (rem_len != 0) - (void) memcpy(out_buf + out_len, - last_block, rem_len); - *pulDataLen = out_len + rem_len; - } else { - *pulDataLen = 0; - goto cleanup; - } - } else { - *pulDataLen = out_len; - } - - if (update) { - /* - * For decrypt update, if there is remaining data, - * save it and its length in the context. - */ - if (remain != 0) - (void) memcpy(kms_aes_ctx->data, pEncrypted + - (ulEncryptedLen - remain), remain); - kms_aes_ctx->remain_len = remain; - } - - if (rc == 0) - break; -decrypt_failed: - *pulDataLen = 0; - rv = CKR_FUNCTION_FAILED; - goto cleanup; - } - default: - rv = CKR_MECHANISM_INVALID; - goto cleanup; - } /* end switch */ - - if (update) - return (CKR_OK); - - /* - * The following code will be executed if the caller is - * kms_decrypt() or an error occurred. The decryption - * operation will be terminated so we need to do some cleanup. - */ -cleanup: - (void) pthread_mutex_lock(&session_p->session_mutex); - aes_ctx = (aes_ctx_t *)kms_aes_ctx->aes_cbc; - if (aes_ctx != NULL) { - bzero(aes_ctx->ac_keysched, aes_ctx->ac_keysched_len); - free(kms_aes_ctx->aes_cbc); - } - - bzero(kms_aes_ctx->key_sched, kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - free(session_p->decrypt.context); - session_p->decrypt.context = NULL; - (void) pthread_mutex_unlock(&session_p->session_mutex); - - return (rv); -} - - -/* - * Allocate and initialize a context for AES CBC mode of operation. - */ -void * -aes_cbc_ctx_init(void *key_sched, size_t size, uint8_t *ivec) -{ - aes_ctx_t *aes_ctx; - - if ((aes_ctx = calloc(1, sizeof (aes_ctx_t))) == NULL) - return (NULL); - - aes_ctx->ac_keysched = key_sched; - - (void) memcpy(&aes_ctx->ac_iv[0], ivec, AES_BLOCK_LEN); - - aes_ctx->ac_lastp = (uint8_t *)aes_ctx->ac_iv; - aes_ctx->ac_keysched_len = size; - aes_ctx->ac_flags |= CBC_MODE; - - return ((void *)aes_ctx); -} - -/* - * kms_encrypt_final() - * - * Arguments: - * session_p: pointer to kms_session_t struct - * pLastEncryptedPart: pointer to the last encrypted data part - * pulLastEncryptedPartLen: pointer to the length of the last - * encrypted data part - * - * Description: - * called by C_EncryptFinal(). - * - * Returns: - * CKR_OK: success - * CKR_FUNCTION_FAILED: encrypt final function failed - * CKR_DATA_LEN_RANGE: remaining buffer contains bad length - */ -CK_RV -kms_aes_encrypt_final(kms_session_t *session_p, CK_BYTE_PTR pLastEncryptedPart, - CK_ULONG_PTR pulLastEncryptedPartLen) -{ - - CK_MECHANISM_TYPE mechanism = session_p->encrypt.mech.mechanism; - CK_ULONG out_len; - CK_RV rv = CKR_OK; - int rc; - - (void) pthread_mutex_lock(&session_p->session_mutex); - - if (session_p->encrypt.context == NULL) { - rv = CKR_OPERATION_NOT_INITIALIZED; - *pulLastEncryptedPartLen = 0; - - } - if (mechanism == CKM_AES_CBC_PAD) { - kms_aes_ctx_t *aes_ctx; - - aes_ctx = (kms_aes_ctx_t *)session_p->encrypt.context; - /* - * For CKM_AES_CBC_PAD, compute output length with - * padding. If the remaining buffer has one block - * of data, then output length will be two blocksize of - * ciphertext. If the remaining buffer has less than - * one block of data, then output length will be - * one blocksize. - */ - if (aes_ctx->remain_len == AES_BLOCK_LEN) - out_len = 2 * AES_BLOCK_LEN; - else - out_len = AES_BLOCK_LEN; - - if (pLastEncryptedPart == NULL) { - /* - * Application asks for the length of the output - * buffer to hold the ciphertext. - */ - *pulLastEncryptedPartLen = out_len; - goto clean1; - } else { - crypto_data_t out; - - /* Copy remaining data to the output buffer. */ - (void) memcpy(pLastEncryptedPart, aes_ctx->data, - aes_ctx->remain_len); - - /* - * Add padding bytes prior to encrypt final. - */ - kms_add_pkcs7_padding(pLastEncryptedPart + - aes_ctx->remain_len, AES_BLOCK_LEN, - aes_ctx->remain_len); - - out.cd_format = CRYPTO_DATA_RAW; - out.cd_offset = 0; - out.cd_length = out_len; - out.cd_raw.iov_base = (char *)pLastEncryptedPart; - out.cd_raw.iov_len = out_len; - - /* Encrypt multiple blocks of data. */ - rc = aes_encrypt_contiguous_blocks( - (aes_ctx_t *)aes_ctx->aes_cbc, - (char *)pLastEncryptedPart, out_len, &out); - - if (rc == 0) { - *pulLastEncryptedPartLen = out_len; - } else { - *pulLastEncryptedPartLen = 0; - rv = CKR_FUNCTION_FAILED; - } - - /* Cleanup memory space. */ - free(aes_ctx->aes_cbc); - bzero(aes_ctx->key_sched, - aes_ctx->keysched_len); - free(aes_ctx->key_sched); - } - } else if (mechanism == CKM_AES_CBC) { - kms_aes_ctx_t *aes_ctx; - - aes_ctx = (kms_aes_ctx_t *)session_p->encrypt.context; - /* - * CKM_AES_CBC and CKM_AES_ECB does not do any padding, - * so when the final is called, the remaining buffer - * should not contain any more data. - */ - *pulLastEncryptedPartLen = 0; - if (aes_ctx->remain_len != 0) { - rv = CKR_DATA_LEN_RANGE; - } else { - if (pLastEncryptedPart == NULL) - goto clean1; - } - - /* Cleanup memory space. */ - free(aes_ctx->aes_cbc); - bzero(aes_ctx->key_sched, aes_ctx->keysched_len); - free(aes_ctx->key_sched); - } else { - rv = CKR_MECHANISM_INVALID; - } - - free(session_p->encrypt.context); - session_p->encrypt.context = NULL; -clean1: - (void) pthread_mutex_unlock(&session_p->session_mutex); - return (rv); -} - -/* - * kms_decrypt_final() - * - * Arguments: - * session_p: pointer to kms_session_t struct - * pLastPart: pointer to the last recovered data part - * pulLastPartLen: pointer to the length of the last recovered data part - * - * Description: - * called by C_DecryptFinal(). - * - * Returns: - * CKR_OK: success - * CKR_FUNCTION_FAILED: decrypt final function failed - * CKR_ENCRYPTED_DATA_LEN_RANGE: remaining buffer contains bad length - */ -CK_RV -kms_aes_decrypt_final(kms_session_t *session_p, CK_BYTE_PTR pLastPart, - CK_ULONG_PTR pulLastPartLen) -{ - - CK_MECHANISM_TYPE mechanism = session_p->decrypt.mech.mechanism; - CK_ULONG out_len; - CK_RV rv = CKR_OK; - int rc; - - (void) pthread_mutex_lock(&session_p->session_mutex); - - if (session_p->decrypt.context == NULL) { - rv = CKR_OPERATION_NOT_INITIALIZED; - *pulLastPartLen = 0; - goto clean2; - } - switch (mechanism) { - - case CKM_AES_CBC_PAD: - { - kms_aes_ctx_t *kms_aes_ctx; - kms_aes_ctx = (kms_aes_ctx_t *)session_p->decrypt.context; - - /* - * We should have only one block of data left in the - * remaining buffer. - */ - if (kms_aes_ctx->remain_len != AES_BLOCK_LEN) { - *pulLastPartLen = 0; - rv = CKR_ENCRYPTED_DATA_LEN_RANGE; - /* Cleanup memory space. */ - free(kms_aes_ctx->aes_cbc); - bzero(kms_aes_ctx->key_sched, - kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - - goto clean1; - } - - out_len = AES_BLOCK_LEN; - - /* - * If application asks for the length of the output buffer - * to hold the plaintext? - */ - if (pLastPart == NULL) { - *pulLastPartLen = out_len; - rv = CKR_OK; - goto clean2; - } else { - crypto_data_t out; - - /* Copy remaining data to the output buffer. */ - (void) memcpy(pLastPart, kms_aes_ctx->data, - AES_BLOCK_LEN); - - out.cd_format = CRYPTO_DATA_RAW; - out.cd_offset = 0; - out.cd_length = AES_BLOCK_LEN; - out.cd_raw.iov_base = (char *)pLastPart; - out.cd_raw.iov_len = AES_BLOCK_LEN; - - /* Decrypt final block of data. */ - rc = aes_decrypt_contiguous_blocks( - (aes_ctx_t *)kms_aes_ctx->aes_cbc, - (char *)pLastPart, AES_BLOCK_LEN, &out); - - if (rc == 0) { - /* - * Remove padding bytes after decryption of - * ciphertext block to produce the original - * plaintext. - */ - rv = kms_remove_pkcs7_padding(pLastPart, - AES_BLOCK_LEN, &out_len, AES_BLOCK_LEN); - if (rv != CKR_OK) - *pulLastPartLen = 0; - else - *pulLastPartLen = out_len; - } else { - *pulLastPartLen = 0; - rv = CKR_FUNCTION_FAILED; - } - - /* Cleanup memory space. */ - free(kms_aes_ctx->aes_cbc); - bzero(kms_aes_ctx->key_sched, - kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - - } - - break; - } - - case CKM_AES_CBC: - { - kms_aes_ctx_t *kms_aes_ctx; - - kms_aes_ctx = (kms_aes_ctx_t *)session_p->decrypt.context; - /* - * CKM_AES_CBC and CKM_AES_ECB does not do any padding, - * so when the final is called, the remaining buffer - * should not contain any more data. - */ - *pulLastPartLen = 0; - if (kms_aes_ctx->remain_len != 0) { - rv = CKR_ENCRYPTED_DATA_LEN_RANGE; - } else { - if (pLastPart == NULL) - goto clean2; - } - - /* Cleanup memory space. */ - free(kms_aes_ctx->aes_cbc); - bzero(kms_aes_ctx->key_sched, kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - - break; - } - default: - /* PKCS11: The mechanism only supports single-part operation. */ - rv = CKR_MECHANISM_INVALID; - break; - } - -clean1: - free(session_p->decrypt.context); - session_p->decrypt.context = NULL; - -clean2: - (void) pthread_mutex_unlock(&session_p->session_mutex); - - return (rv); - -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsAttributeUtil.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsAttributeUtil.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1726 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012 Milan Jurik. All rights reserved. - */ -#include -#include -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsObject.h" -#include "kmsSession.h" -#include "kmsSlot.h" - -/* - * This attribute table is used by the kms_lookup_attr() - * to validate the attributes. - */ -CK_ATTRIBUTE_TYPE attr_map[] = { - CKA_PRIVATE, - CKA_LABEL, - CKA_APPLICATION, - CKA_OBJECT_ID, - CKA_CERTIFICATE_TYPE, - CKA_ISSUER, - CKA_SERIAL_NUMBER, - CKA_AC_ISSUER, - CKA_OWNER, - CKA_ATTR_TYPES, - CKA_SUBJECT, - CKA_ID, - CKA_SENSITIVE, - CKA_START_DATE, - CKA_END_DATE, - CKA_MODULUS, - CKA_MODULUS_BITS, - CKA_PUBLIC_EXPONENT, - CKA_PRIVATE_EXPONENT, - CKA_PRIME_1, - CKA_PRIME_2, - CKA_EXPONENT_1, - CKA_EXPONENT_2, - CKA_COEFFICIENT, - CKA_PRIME, - CKA_SUBPRIME, - CKA_BASE, - CKA_EXTRACTABLE, - CKA_LOCAL, - CKA_NEVER_EXTRACTABLE, - CKA_ALWAYS_SENSITIVE, - CKA_MODIFIABLE, - CKA_ECDSA_PARAMS, - CKA_EC_POINT, - CKA_SECONDARY_AUTH, - CKA_AUTH_PIN_FLAGS, - CKA_HW_FEATURE_TYPE, - CKA_RESET_ON_INIT, - CKA_HAS_RESET -}; - -/* - * attributes that exists only in secret key objects - * Note: some attributes may also exist in one or two - * other object classes, but they are also listed - * because not all object have them. - */ -CK_ATTRIBUTE_TYPE SECRET_KEY_ATTRS[] = -{ - CKA_VALUE_LEN, - CKA_ENCRYPT, - CKA_DECRYPT, - CKA_WRAP, - CKA_UNWRAP, - CKA_SIGN, - CKA_VERIFY, - CKA_SENSITIVE, - CKA_EXTRACTABLE, - CKA_NEVER_EXTRACTABLE, - CKA_ALWAYS_SENSITIVE -}; - -/* - * Validate the attribute by using binary search algorithm. - */ -CK_RV -kms_lookup_attr(CK_ATTRIBUTE_TYPE type) -{ - size_t lower, middle, upper; - - lower = 0; - upper = (sizeof (attr_map) / sizeof (CK_ATTRIBUTE_TYPE)) - 1; - - while (lower <= upper) { - /* Always starts from middle. */ - middle = (lower + upper) / 2; - - if (type > attr_map[middle]) { - /* Adjust the lower bound to upper half. */ - lower = middle + 1; - continue; - } - - if (type == attr_map[middle]) { - /* Found it. */ - return (CKR_OK); - } - - if (type < attr_map[middle]) { - /* Adjust the upper bound to lower half. */ - upper = middle - 1; - continue; - } - } - - /* Failed to find the matching attribute from the attribute table. */ - return (CKR_ATTRIBUTE_TYPE_INVALID); -} - - -/* - * Validate the attribute by using the following search algorithm: - * - * 1) Search for the most frequently used attributes first. - * 2) If not found, search for the usage-purpose attributes - these - * attributes have dense set of values, therefore compiler will - * optimize it with a branch table and branch to the appropriate - * case. - * 3) If still not found, use binary search for the rest of the - * attributes in the attr_map[] table. - */ -CK_RV -kms_validate_attr(CK_ATTRIBUTE_PTR template, CK_ULONG ulAttrNum, - CK_OBJECT_CLASS *class) -{ - - CK_ULONG i; - CK_RV rv = CKR_OK; - - for (i = 0; i < ulAttrNum; i++) { - /* First tier search */ - switch (template[i].type) { - case CKA_CLASS: - *class = *((CK_OBJECT_CLASS*)template[i].pValue); - break; - case CKA_TOKEN: - break; - case CKA_KEY_TYPE: - break; - case CKA_VALUE: - break; - case CKA_VALUE_LEN: - break; - case CKA_VALUE_BITS: - break; - default: - /* Second tier search */ - switch (template[i].type) { - case CKA_ENCRYPT: - break; - case CKA_DECRYPT: - break; - case CKA_WRAP: - break; - case CKA_UNWRAP: - break; - case CKA_SIGN: - break; - case CKA_SIGN_RECOVER: - break; - case CKA_VERIFY: - break; - case CKA_VERIFY_RECOVER: - break; - case CKA_DERIVE: - break; - default: - /* Third tier search */ - rv = kms_lookup_attr(template[i].type); - if (rv != CKR_OK) - return (rv); - break; - } - break; - } - } - return (rv); -} - - -/* - * Clean up and release all the storage in the extra attribute list - * of an object. - */ -void -kms_cleanup_extra_attr(kms_object_t *object_p) -{ - - CK_ATTRIBUTE_INFO_PTR extra_attr; - CK_ATTRIBUTE_INFO_PTR tmp; - - if (object_p == NULL) - return; - - extra_attr = object_p->extra_attrlistp; - while (extra_attr) { - tmp = extra_attr->next; - if (extra_attr->attr.pValue) - /* - * All extra attributes in the extra attribute - * list have pValue points to the value of the - * attribute (with simple byte array type). - * Free the storage for the value of the attribute. - */ - free(extra_attr->attr.pValue); - - /* Free the storage for the attribute_info struct. */ - free(extra_attr); - extra_attr = tmp; - } - - object_p->extra_attrlistp = NULL; -} - -/* - * Create the attribute_info struct to hold the object's attribute, - * and add it to the extra attribute list of an object. - */ -CK_RV -kms_add_extra_attr(CK_ATTRIBUTE_PTR template, kms_object_t *object_p) -{ - - CK_ATTRIBUTE_INFO_PTR attrp; - - /* Allocate the storage for the attribute_info struct. */ - attrp = calloc(1, sizeof (attribute_info_t)); - if (attrp == NULL) { - return (CKR_HOST_MEMORY); - } - - /* Set up attribute_info struct. */ - attrp->attr.type = template->type; - attrp->attr.ulValueLen = template->ulValueLen; - - if ((template->pValue != NULL) && - (template->ulValueLen > 0)) { - /* Allocate storage for the value of the attribute. */ - attrp->attr.pValue = malloc(template->ulValueLen); - if (attrp->attr.pValue == NULL) { - free(attrp); - return (CKR_HOST_MEMORY); - } - - (void) memcpy(attrp->attr.pValue, template->pValue, - template->ulValueLen); - } else { - attrp->attr.pValue = NULL; - } - - /* Insert the new attribute in front of extra attribute list. */ - if (object_p->extra_attrlistp == NULL) { - object_p->extra_attrlistp = attrp; - attrp->next = NULL; - } else { - attrp->next = object_p->extra_attrlistp; - object_p->extra_attrlistp = attrp; - } - - return (CKR_OK); -} - -/* - * Copy the attribute_info struct from the old object to a new attribute_info - * struct, and add that new struct to the extra attribute list of the new - * object. - */ -CK_RV -kms_copy_extra_attr(CK_ATTRIBUTE_INFO_PTR old_attrp, - kms_object_t *object_p) -{ - CK_ATTRIBUTE_INFO_PTR attrp; - - /* Allocate attribute_info struct. */ - attrp = calloc(1, sizeof (attribute_info_t)); - if (attrp == NULL) { - return (CKR_HOST_MEMORY); - } - - attrp->attr.type = old_attrp->attr.type; - attrp->attr.ulValueLen = old_attrp->attr.ulValueLen; - - if ((old_attrp->attr.pValue != NULL) && - (old_attrp->attr.ulValueLen > 0)) { - attrp->attr.pValue = malloc(old_attrp->attr.ulValueLen); - if (attrp->attr.pValue == NULL) { - free(attrp); - return (CKR_HOST_MEMORY); - } - - (void) memcpy(attrp->attr.pValue, old_attrp->attr.pValue, - old_attrp->attr.ulValueLen); - } else { - attrp->attr.pValue = NULL; - } - - /* Insert the new attribute in front of extra attribute list */ - if (object_p->extra_attrlistp == NULL) { - object_p->extra_attrlistp = attrp; - attrp->next = NULL; - } else { - attrp->next = object_p->extra_attrlistp; - object_p->extra_attrlistp = attrp; - } - - return (CKR_OK); -} - -/* - * Get the attribute triple from the extra attribute list in the object - * (if the specified attribute type is found), and copy it to a template. - * Note the type of the attribute to be copied is specified by the template, - * and the storage is pre-allocated for the atrribute value in the template - * for doing the copy. - */ -CK_RV -get_extra_attr_from_object(kms_object_t *object_p, CK_ATTRIBUTE_PTR template) -{ - CK_ATTRIBUTE_INFO_PTR extra_attr; - CK_ATTRIBUTE_TYPE type = template->type; - - extra_attr = object_p->extra_attrlistp; - - while (extra_attr) { - if (type == extra_attr->attr.type) { - /* Found it. */ - break; - } else { - /* Does not match, try next one. */ - extra_attr = extra_attr->next; - } - } - - if (extra_attr == NULL) { - /* A valid but un-initialized attribute. */ - template->ulValueLen = 0; - return (CKR_OK); - } - - /* - * We found the attribute in the extra attribute list. - */ - if (template->pValue == NULL) { - template->ulValueLen = extra_attr->attr.ulValueLen; - return (CKR_OK); - } - - if (template->ulValueLen >= extra_attr->attr.ulValueLen) { - /* - * The buffer provided by the application is large - * enough to hold the value of the attribute. - */ - (void) memcpy(template->pValue, extra_attr->attr.pValue, - extra_attr->attr.ulValueLen); - template->ulValueLen = extra_attr->attr.ulValueLen; - return (CKR_OK); - } else { - /* - * The buffer provided by the application does - * not have enough space to hold the value. - */ - template->ulValueLen = (CK_ULONG)-1; - return (CKR_BUFFER_TOO_SMALL); - } -} - -/* - * Modify the attribute triple in the extra attribute list of the object - * if the specified attribute type is found. Otherwise, just add it to - * list. - */ -CK_RV -set_extra_attr_to_object(kms_object_t *object_p, CK_ATTRIBUTE_TYPE type, - CK_ATTRIBUTE_PTR template) -{ - CK_ATTRIBUTE_INFO_PTR extra_attr; - - extra_attr = object_p->extra_attrlistp; - - while (extra_attr) { - if (type == extra_attr->attr.type) { - /* Found it. */ - break; - } else { - /* Does not match, try next one. */ - extra_attr = extra_attr->next; - } - } - - if (extra_attr == NULL) { - /* - * This attribute is a new one, go ahead adding it to - * the extra attribute list. - */ - return (kms_add_extra_attr(template, object_p)); - } - - /* We found the attribute in the extra attribute list. */ - if ((template->pValue != NULL) && - (template->ulValueLen > 0)) { - if (template->ulValueLen > extra_attr->attr.ulValueLen) { - /* The old buffer is too small to hold the new value. */ - if (extra_attr->attr.pValue != NULL) - /* Free storage for the old attribute value. */ - free(extra_attr->attr.pValue); - - /* Allocate storage for the new attribute value. */ - extra_attr->attr.pValue = malloc(template->ulValueLen); - if (extra_attr->attr.pValue == NULL) { - return (CKR_HOST_MEMORY); - } - } - - /* Replace the attribute with new value. */ - extra_attr->attr.ulValueLen = template->ulValueLen; - (void) memcpy(extra_attr->attr.pValue, template->pValue, - template->ulValueLen); - } else { - extra_attr->attr.pValue = NULL; - } - - return (CKR_OK); -} - -/* - * Copy the boolean data type attribute value from an object for the - * specified attribute to the template. - */ -CK_RV -get_bool_attr_from_object(kms_object_t *object_p, CK_ULONG bool_flag, - CK_ATTRIBUTE_PTR template) -{ - - if (template->pValue == NULL) { - template->ulValueLen = sizeof (CK_BBOOL); - return (CKR_OK); - } - - if (template->ulValueLen >= sizeof (CK_BBOOL)) { - /* - * The buffer provided by the application is large - * enough to hold the value of the attribute. - */ - if (object_p->bool_attr_mask & bool_flag) { - *((CK_BBOOL *)template->pValue) = B_TRUE; - } else { - *((CK_BBOOL *)template->pValue) = B_FALSE; - } - - template->ulValueLen = sizeof (CK_BBOOL); - return (CKR_OK); - } else { - /* - * The buffer provided by the application does - * not have enough space to hold the value. - */ - template->ulValueLen = (CK_ULONG)-1; - return (CKR_BUFFER_TOO_SMALL); - } -} - -/* - * Set the boolean data type attribute value in the object. - */ -CK_RV -set_bool_attr_to_object(kms_object_t *object_p, CK_ULONG bool_flag, - CK_ATTRIBUTE_PTR template) -{ - - if (*(CK_BBOOL *)template->pValue) - object_p->bool_attr_mask |= bool_flag; - else - object_p->bool_attr_mask &= ~bool_flag; - - return (CKR_OK); -} - - -/* - * Copy the CK_ULONG data type attribute value from an object to the - * template. - */ -CK_RV -get_ulong_attr_from_object(CK_ULONG value, CK_ATTRIBUTE_PTR template) -{ - - if (template->pValue == NULL) { - template->ulValueLen = sizeof (CK_ULONG); - return (CKR_OK); - } - - if (template->ulValueLen >= sizeof (CK_ULONG)) { - /* - * The buffer provided by the application is large - * enough to hold the value of the attribute. - */ - *(CK_ULONG_PTR)template->pValue = value; - template->ulValueLen = sizeof (CK_ULONG); - return (CKR_OK); - } else { - /* - * The buffer provided by the application does - * not have enough space to hold the value. - */ - template->ulValueLen = (CK_ULONG)-1; - return (CKR_BUFFER_TOO_SMALL); - } -} - -CK_RV -get_string_from_template(CK_ATTRIBUTE_PTR dest, CK_ATTRIBUTE_PTR src) -{ - if ((src->pValue != NULL) && - (src->ulValueLen > 0)) { - /* Allocate storage for the value of the attribute. */ - dest->pValue = malloc(src->ulValueLen); - if (dest->pValue == NULL) { - return (CKR_HOST_MEMORY); - } - - (void) memcpy(dest->pValue, src->pValue, - src->ulValueLen); - dest->ulValueLen = src->ulValueLen; - dest->type = src->type; - } else { - dest->pValue = NULL; - dest->ulValueLen = 0; - dest->type = src->type; - } - - return (CKR_OK); - -} - -void -string_attr_cleanup(CK_ATTRIBUTE_PTR template) -{ - - if (template->pValue) { - free(template->pValue); - template->pValue = NULL; - template->ulValueLen = 0; - } -} - -/* - * Parse the common attributes. Return to caller with appropriate return - * value to indicate if the supplied template specifies a valid attribute - * with a valid value. - */ -static CK_RV -kms_parse_common_attrs(CK_ATTRIBUTE_PTR template, uint64_t *attr_mask_p) -{ - CK_RV rv = CKR_OK; - kms_slot_t *pslot = get_slotinfo(); - - switch (template->type) { - case CKA_CLASS: - break; - case CKA_TOKEN: - if ((*(CK_BBOOL *)template->pValue) == TRUE) - *attr_mask_p |= TOKEN_BOOL_ON; - break; - - case CKA_PRIVATE: - if ((*(CK_BBOOL *)template->pValue) == TRUE) { - /* - * Cannot create a private object if the token - * has a keystore and the user isn't logged in. - */ - if (pslot->sl_state != CKU_USER) { - rv = CKR_ATTRIBUTE_VALUE_INVALID; - } else { - *attr_mask_p |= PRIVATE_BOOL_ON; - } - } - break; - - case CKA_MODIFIABLE: - if ((*(CK_BBOOL *)template->pValue) == FALSE) { - *attr_mask_p &= ~MODIFIABLE_BOOL_ON; - } - break; - - case CKA_LABEL: - break; - - default: - rv = CKR_TEMPLATE_INCONSISTENT; - } - - return (rv); -} - -/* - * Build a Secret Key Object. - * - * - Parse the object's template, and when an error is detected such as - * invalid attribute type, invalid attribute value, etc., return - * with appropriate return value. - * - Set up attribute mask field in the object for the supplied common - * attributes that have boolean type. - * - Build the attribute_info struct to hold the value of each supplied - * attribute that has byte array type. Link attribute_info structs - * together to form the extra attribute list of the object. - * - Allocate storage for the Secret Key object. - * - Build the Secret Key object. Allocate storage to hold the big integer - * value for the attribute CKA_VALUE that is required for all the key - * types supported by secret key object. - * - */ -CK_RV -kms_build_secret_key_object(CK_ATTRIBUTE_PTR template, - CK_ULONG ulAttrNum, kms_object_t *new_object) -{ - int i; - CK_KEY_TYPE keytype = (CK_KEY_TYPE)~0UL; - uint64_t attr_mask; - CK_RV rv = CKR_OK; - int isLabel = 0; - /* Must not set flags */ - int isValueLen = 0; - CK_ATTRIBUTE string_tmp; - secret_key_obj_t *sck; - - string_tmp.pValue = NULL; - - /* - * If the object was pulled from the KMS, the - * attributes are encoded in the object record - * before this function is called, we don't - * want to overwrite them unless the attribute - * template says differently. - */ - if (new_object->bool_attr_mask != 0) - attr_mask = new_object->bool_attr_mask; - else - attr_mask = SECRET_KEY_DEFAULT; - - /* Allocate storage for Secret Key Object. */ - sck = calloc(1, sizeof (secret_key_obj_t)); - if (sck == NULL) { - rv = CKR_HOST_MEMORY; - goto fail_cleanup; - } - - new_object->object_class_u.secret_key = sck; - new_object->class = CKO_SECRET_KEY; - - for (i = 0; i < ulAttrNum; i++) { - - /* Secret Key Object Attributes */ - switch (template[i].type) { - - /* common key attributes */ - case CKA_KEY_TYPE: - keytype = *((CK_KEY_TYPE*)template[i].pValue); - break; - - case CKA_ID: - case CKA_START_DATE: - case CKA_END_DATE: - /* - * Allocate storage to hold the attribute - * value with byte array type, and add it to - * the extra attribute list of the object. - */ - rv = kms_add_extra_attr(&template[i], - new_object); - if (rv != CKR_OK) { - goto fail_cleanup; - } - break; - - /* - * The following key related attribute types must - * not be specified by C_CreateObject. - */ - case CKA_LOCAL: - case CKA_KEY_GEN_MECHANISM: - case CKA_ALWAYS_SENSITIVE: - case CKA_NEVER_EXTRACTABLE: - rv = CKR_TEMPLATE_INCONSISTENT; - goto fail_cleanup; - - /* Key related boolean attributes */ - case CKA_DERIVE: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= DERIVE_BOOL_ON; - break; - - case CKA_SENSITIVE: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= SENSITIVE_BOOL_ON; - break; - - case CKA_ENCRYPT: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= ENCRYPT_BOOL_ON; - else - attr_mask &= ~ENCRYPT_BOOL_ON; - break; - - case CKA_DECRYPT: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= DECRYPT_BOOL_ON; - else - attr_mask &= ~DECRYPT_BOOL_ON; - break; - - case CKA_SIGN: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= SIGN_BOOL_ON; - else - attr_mask &= ~SIGN_BOOL_ON; - break; - - case CKA_VERIFY: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= VERIFY_BOOL_ON; - else - attr_mask &= ~VERIFY_BOOL_ON; - break; - - case CKA_WRAP: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= WRAP_BOOL_ON; - break; - - case CKA_UNWRAP: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= UNWRAP_BOOL_ON; - break; - - case CKA_EXTRACTABLE: - if (*(CK_BBOOL *)template[i].pValue) - attr_mask |= EXTRACTABLE_BOOL_ON; - else - attr_mask &= ~EXTRACTABLE_BOOL_ON; - break; - - case CKA_VALUE: - if ((template[i].ulValueLen == 0) || - (template[i].pValue == NULL)) { - rv = CKR_ATTRIBUTE_VALUE_INVALID; - goto fail_cleanup; - } - /* - * Copyin attribute from template - * to a local variable. - */ - sck->sk_value = malloc(template[i].ulValueLen); - if (sck->sk_value == NULL) { - rv = CKR_HOST_MEMORY; - goto fail_cleanup; - } - (void) memcpy(sck->sk_value, template[i].pValue, - template[i].ulValueLen); - sck->sk_value_len = template[i].ulValueLen; - break; - - case CKA_VALUE_LEN: - isValueLen = 1; - if (template[i].pValue != NULL) - sck->sk_value_len = - *(CK_ULONG_PTR)template[i].pValue; - else - sck->sk_value_len = 0; - break; - - case CKA_LABEL: - isLabel = 1; - rv = get_string_from_template(&string_tmp, - &template[i]); - if (rv != CKR_OK) - goto fail_cleanup; - break; - - default: - rv = kms_parse_common_attrs(&template[i], &attr_mask); - if (rv != CKR_OK) - goto fail_cleanup; - break; - - } - } /* For */ - - if (keytype == (CK_KEY_TYPE)~0UL) { - rv = CKR_TEMPLATE_INCOMPLETE; - goto fail_cleanup; - } - - new_object->key_type = keytype; - - /* Supported key types of the Secret Key Object */ - switch (keytype) { - - case CKK_AES: - if (!isValueLen) { - rv = CKR_TEMPLATE_INCOMPLETE; - goto fail_cleanup; - } - if (sck->sk_value_len != AES_MIN_KEY_BYTES && - sck->sk_value_len != AES_192_KEY_BYTES && - sck->sk_value_len != AES_MAX_KEY_BYTES) { - rv = CKR_ATTRIBUTE_VALUE_INVALID; - goto fail_cleanup; - } - break; - - case CKK_RC4: - case CKK_GENERIC_SECRET: - case CKK_BLOWFISH: - case CKK_DES: - case CKK_DES2: - case CKK_DES3: - default: - rv = CKR_TEMPLATE_INCONSISTENT; - goto fail_cleanup; - } - - /* Set up object. */ - new_object->bool_attr_mask = attr_mask; - if (isLabel) { - rv = kms_add_extra_attr(&string_tmp, new_object); - if (rv != CKR_OK) - goto fail_cleanup; - string_attr_cleanup(&string_tmp); - } - - return (rv); - -fail_cleanup: - /* - * cleanup the storage allocated to the local variables. - */ - string_attr_cleanup(&string_tmp); - - /* - * cleanup the storage allocated inside the object itself. - */ - kms_cleanup_object(new_object); - - return (rv); -} - -/* - * Validate the attribute types in the object's template. Then, - * call the appropriate build function according to the class of - * the object specified in the template. - * - * Note: The following classes of objects are supported: - * - CKO_SECRET_KEY - */ -CK_RV -kms_build_object(CK_ATTRIBUTE_PTR template, CK_ULONG ulAttrNum, - kms_object_t *new_object) -{ - CK_OBJECT_CLASS class = (CK_OBJECT_CLASS)~0UL; - CK_RV rv = CKR_OK; - - if (template == NULL) { - return (CKR_ARGUMENTS_BAD); - } - - /* Validate the attribute type in the template. */ - rv = kms_validate_attr(template, ulAttrNum, &class); - if (rv != CKR_OK) - return (rv); - - if (class == (CK_OBJECT_CLASS)~0UL) - return (CKR_TEMPLATE_INCOMPLETE); - - /* - * Call the appropriate function based on the supported class - * of the object. - */ - switch (class) { - - case CKO_SECRET_KEY: - rv = kms_build_secret_key_object(template, ulAttrNum, - new_object); - break; - - case CKO_DOMAIN_PARAMETERS: - case CKO_DATA: - case CKO_CERTIFICATE: - case CKO_HW_FEATURE: - case CKO_VENDOR_DEFINED: - case CKO_PUBLIC_KEY: - case CKO_PRIVATE_KEY: - default: - return (CKR_ATTRIBUTE_VALUE_INVALID); - } - - return (rv); -} - - -/* - * Get the value of a requested attribute that is common to all supported - * classes (i.e. public key, private key, secret key classes). - */ -CK_RV -kms_get_common_attrs(kms_object_t *object_p, CK_ATTRIBUTE_PTR template) -{ - - CK_RV rv = CKR_OK; - - switch (template->type) { - - case CKA_CLASS: - return (get_ulong_attr_from_object(object_p->class, - template)); - - /* default boolean attributes */ - case CKA_TOKEN: - template->ulValueLen = sizeof (CK_BBOOL); - if (template->pValue == NULL) { - return (CKR_OK); - } - - *((CK_BBOOL *)template->pValue) = B_FALSE; - break; - - case CKA_PRIVATE: - - template->ulValueLen = sizeof (CK_BBOOL); - if (template->pValue == NULL) { - return (CKR_OK); - } - if (object_p->bool_attr_mask & PRIVATE_BOOL_ON) { - *((CK_BBOOL *)template->pValue) = B_TRUE; - } else { - *((CK_BBOOL *)template->pValue) = B_FALSE; - } - break; - - case CKA_MODIFIABLE: - template->ulValueLen = sizeof (CK_BBOOL); - if (template->pValue == NULL) { - return (CKR_OK); - } - if ((object_p->bool_attr_mask) & MODIFIABLE_BOOL_ON) - *((CK_BBOOL *)template->pValue) = B_TRUE; - else - *((CK_BBOOL *)template->pValue) = B_FALSE; - break; - - case CKA_LABEL: - return (get_extra_attr_from_object(object_p, - template)); - - default: - /* - * The specified attribute for the object is invalid. - * (the object does not possess such an attribute.) - */ - template->ulValueLen = (CK_ULONG)-1; - return (CKR_ATTRIBUTE_TYPE_INVALID); - } - - return (rv); -} - -/* - * Get the value of a requested attribute that is common to all key objects - * (i.e. public key, private key and secret key). - */ -CK_RV -kms_get_common_key_attrs(kms_object_t *object_p, - CK_ATTRIBUTE_PTR template) -{ - - switch (template->type) { - - case CKA_KEY_TYPE: - return (get_ulong_attr_from_object(object_p->key_type, - template)); - - case CKA_ID: - case CKA_START_DATE: - case CKA_END_DATE: - /* - * The above extra attributes have byte array type. - */ - return (get_extra_attr_from_object(object_p, - template)); - - /* Key related boolean attributes */ - case CKA_LOCAL: - return (get_bool_attr_from_object(object_p, - LOCAL_BOOL_ON, template)); - - case CKA_DERIVE: - return (get_bool_attr_from_object(object_p, - DERIVE_BOOL_ON, template)); - - case CKA_KEY_GEN_MECHANISM: - return (get_ulong_attr_from_object(object_p->mechanism, - template)); - - default: - return (CKR_ATTRIBUTE_TYPE_INVALID); - } -} - -/* - * Get the value of a requested attribute of a Secret Key Object. - * - * Rule: All the attributes in the secret key object can be revealed - * except those marked with footnote number "7" when the object - * has its CKA_SENSITIVE attribute set to TRUE or its - * CKA_EXTRACTABLE attribute set to FALSE. - */ -CK_RV -kms_get_secret_key_attribute(kms_object_t *object_p, - CK_ATTRIBUTE_PTR template) -{ - - CK_RV rv = CKR_OK; - CK_KEY_TYPE keytype = object_p->key_type; - - switch (template->type) { - - /* Key related boolean attributes */ - case CKA_SENSITIVE: - return (get_bool_attr_from_object(object_p, - SENSITIVE_BOOL_ON, template)); - - case CKA_ENCRYPT: - return (get_bool_attr_from_object(object_p, - ENCRYPT_BOOL_ON, template)); - - case CKA_DECRYPT: - return (get_bool_attr_from_object(object_p, - DECRYPT_BOOL_ON, template)); - - case CKA_SIGN: - return (get_bool_attr_from_object(object_p, - SIGN_BOOL_ON, template)); - - case CKA_VERIFY: - return (get_bool_attr_from_object(object_p, - VERIFY_BOOL_ON, template)); - - case CKA_WRAP: - return (get_bool_attr_from_object(object_p, - WRAP_BOOL_ON, template)); - - case CKA_UNWRAP: - return (get_bool_attr_from_object(object_p, - UNWRAP_BOOL_ON, template)); - - case CKA_EXTRACTABLE: - return (get_bool_attr_from_object(object_p, - EXTRACTABLE_BOOL_ON, template)); - - case CKA_ALWAYS_SENSITIVE: - return (get_bool_attr_from_object(object_p, - ALWAYS_SENSITIVE_BOOL_ON, template)); - - case CKA_NEVER_EXTRACTABLE: - return (get_bool_attr_from_object(object_p, - NEVER_EXTRACTABLE_BOOL_ON, template)); - - case CKA_VALUE: - /* - * If the specified attribute for the secret key object - * cannot be revealed because the object is sensitive - * or unextractable, then the ulValueLen is set to -1. - */ - if ((object_p->bool_attr_mask & SENSITIVE_BOOL_ON) || - !(object_p->bool_attr_mask & EXTRACTABLE_BOOL_ON)) { - template->ulValueLen = (CK_ULONG)-1; - return (CKR_ATTRIBUTE_SENSITIVE); - } - - switch (keytype) { - case CKK_AES: - /* - * Copy secret key object attributes to template. - */ - if (template->pValue == NULL) { - template->ulValueLen = - OBJ_SEC_VALUE_LEN(object_p); - return (CKR_OK); - } - - if (OBJ_SEC_VALUE(object_p) == NULL) { - template->ulValueLen = 0; - return (CKR_OK); - } - - if (template->ulValueLen >= - OBJ_SEC_VALUE_LEN(object_p)) { - (void) memcpy(template->pValue, - OBJ_SEC_VALUE(object_p), - OBJ_SEC_VALUE_LEN(object_p)); - template->ulValueLen = - OBJ_SEC_VALUE_LEN(object_p); - return (CKR_OK); - } else { - template->ulValueLen = (CK_ULONG)-1; - return (CKR_BUFFER_TOO_SMALL); - } - - case CKK_RC4: - case CKK_GENERIC_SECRET: - case CKK_RC5: - case CKK_DES: - case CKK_DES2: - case CKK_DES3: - case CKK_CDMF: - case CKK_BLOWFISH: - default: - template->ulValueLen = (CK_ULONG)-1; - rv = CKR_ATTRIBUTE_TYPE_INVALID; - break; - } - break; - - case CKA_VALUE_LEN: - return (get_ulong_attr_from_object(OBJ_SEC_VALUE_LEN(object_p), - template)); - - default: - /* - * First, get the value of the request attribute defined - * in the list of common key attributes. If the request - * attribute is not found in that list, then get the - * attribute from the list of common attributes. - */ - rv = kms_get_common_key_attrs(object_p, template); - if (rv == CKR_ATTRIBUTE_TYPE_INVALID) { - rv = kms_get_common_attrs(object_p, template); - } - break; - } - - return (rv); - -} - -/* - * Call the appropriate get attribute function according to the class - * of object. - * - * The caller of this function holds the lock on the object. - */ -CK_RV -kms_get_attribute(kms_object_t *object_p, CK_ATTRIBUTE_PTR template) -{ - - CK_RV rv = CKR_OK; - CK_OBJECT_CLASS class = object_p->class; - - switch (class) { - case CKO_SECRET_KEY: - rv = kms_get_secret_key_attribute(object_p, template); - break; - - case CKO_PRIVATE_KEY: - case CKO_PUBLIC_KEY: - default: - /* - * If the specified attribute for the object is invalid - * (the object does not possess such as attribute), then - * the ulValueLen is modified to hold the value -1. - */ - template->ulValueLen = (CK_ULONG)-1; - return (CKR_ATTRIBUTE_TYPE_INVALID); - } - - return (rv); - -} - -/* - * Set the value of an attribute that is common to all key objects - * (i.e. public key, private key and secret key). - */ -static CK_RV -kms_set_common_key_attribute(kms_object_t *object_p, - CK_ATTRIBUTE_PTR template, boolean_t copy) -{ - - kms_slot_t *pslot = get_slotinfo(); - CK_RV rv = CKR_OK; - - switch (template->type) { - - case CKA_LABEL: - /* - * Only the LABEL can be modified in the common storage - * object attributes after the object is created. - */ - return (set_extra_attr_to_object(object_p, - CKA_LABEL, template)); - - case CKA_ID: - return (set_extra_attr_to_object(object_p, - CKA_ID, template)); - - case CKA_START_DATE: - return (set_extra_attr_to_object(object_p, - CKA_START_DATE, template)); - - case CKA_END_DATE: - return (set_extra_attr_to_object(object_p, - CKA_END_DATE, template)); - - case CKA_DERIVE: - return (set_bool_attr_to_object(object_p, - DERIVE_BOOL_ON, template)); - - case CKA_CLASS: - case CKA_KEY_TYPE: - case CKA_LOCAL: - return (CKR_ATTRIBUTE_READ_ONLY); - - case CKA_PRIVATE: - if (!copy) { - /* called from C_SetAttributeValue() */ - return (CKR_ATTRIBUTE_READ_ONLY); - } - - /* called from C_CopyObject() */ - if ((*(CK_BBOOL *)template->pValue) != B_TRUE) { - return (CKR_OK); - } - - (void) pthread_mutex_lock(&pslot->sl_mutex); - /* - * Cannot create a private object if the token - * has a keystore and the user isn't logged in. - */ - if (pslot->sl_state != CKU_USER) { - rv = CKR_USER_NOT_LOGGED_IN; - } else { - rv = set_bool_attr_to_object(object_p, - PRIVATE_BOOL_ON, template); - } - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (rv); - - case CKA_MODIFIABLE: - if (copy) { - rv = set_bool_attr_to_object(object_p, - MODIFIABLE_BOOL_ON, template); - } else { - rv = CKR_ATTRIBUTE_READ_ONLY; - } - return (rv); - - default: - return (CKR_TEMPLATE_INCONSISTENT); - } - -} - -/* - * Set the value of an attribute of a Secret Key Object. - * - * Rule: The attributes marked with footnote number "8" in the PKCS11 - * spec may be modified (p.88 in PKCS11 spec.). - */ -static CK_RV -kms_set_secret_key_attribute(kms_object_t *object_p, - CK_ATTRIBUTE_PTR template, boolean_t copy) -{ - CK_KEY_TYPE keytype = object_p->key_type; - - switch (template->type) { - - case CKA_SENSITIVE: - /* - * Cannot set SENSITIVE to FALSE if it is already ON. - */ - if (((*(CK_BBOOL *)template->pValue) == B_FALSE) && - (object_p->bool_attr_mask & SENSITIVE_BOOL_ON)) { - return (CKR_ATTRIBUTE_READ_ONLY); - } - - if (*(CK_BBOOL *)template->pValue) - object_p->bool_attr_mask |= SENSITIVE_BOOL_ON; - return (CKR_OK); - - case CKA_ENCRYPT: - return (set_bool_attr_to_object(object_p, - ENCRYPT_BOOL_ON, template)); - - case CKA_DECRYPT: - return (set_bool_attr_to_object(object_p, - DECRYPT_BOOL_ON, template)); - - case CKA_SIGN: - return (set_bool_attr_to_object(object_p, - SIGN_BOOL_ON, template)); - - case CKA_VERIFY: - return (set_bool_attr_to_object(object_p, - VERIFY_BOOL_ON, template)); - - case CKA_WRAP: - return (set_bool_attr_to_object(object_p, - WRAP_BOOL_ON, template)); - - case CKA_UNWRAP: - return (set_bool_attr_to_object(object_p, - UNWRAP_BOOL_ON, template)); - - case CKA_EXTRACTABLE: - /* - * Cannot set EXTRACTABLE to TRUE if it is already OFF. - */ - if ((*(CK_BBOOL *)template->pValue) && - !(object_p->bool_attr_mask & EXTRACTABLE_BOOL_ON)) { - return (CKR_ATTRIBUTE_READ_ONLY); - } - - if ((*(CK_BBOOL *)template->pValue) == B_FALSE) - object_p->bool_attr_mask &= ~EXTRACTABLE_BOOL_ON; - return (CKR_OK); - - case CKA_VALUE: - return (CKR_ATTRIBUTE_READ_ONLY); - - case CKA_VALUE_LEN: - if ((keytype == CKK_RC4) || - (keytype == CKK_GENERIC_SECRET) || - (keytype == CKK_AES) || - (keytype == CKK_BLOWFISH)) - return (CKR_ATTRIBUTE_READ_ONLY); - break; - - default: - /* - * Set the value of a common key attribute. - */ - return (kms_set_common_key_attribute(object_p, - template, copy)); - } - - /* - * If we got this far, then the combination of key type - * and requested attribute is invalid. - */ - return (CKR_ATTRIBUTE_TYPE_INVALID); -} - -/* - * Call the appropriate set attribute function according to the class - * of object. - * - * The caller of this function does not hold the lock on the original - * object, since this function is setting the attribute on the new object - * that is being modified. - * - */ -CK_RV -kms_set_attribute(kms_object_t *object_p, CK_ATTRIBUTE_PTR template, - boolean_t copy) -{ - - CK_RV rv = CKR_OK; - CK_OBJECT_CLASS class = object_p->class; - - switch (class) { - - case CKO_SECRET_KEY: - rv = kms_set_secret_key_attribute(object_p, template, - copy); - break; - - case CKO_PUBLIC_KEY: - case CKO_PRIVATE_KEY: - default: - /* - * If the template specifies a value of an attribute - * which is incompatible with other existing attributes - * of the object, then fails with return code - * CKR_TEMPLATE_INCONSISTENT. - */ - rv = CKR_TEMPLATE_INCONSISTENT; - break; - } - - return (rv); -} - -CK_RV -kms_copy_secret_key_attr(secret_key_obj_t *old_secret_key_obj_p, - secret_key_obj_t **new_secret_key_obj_p) -{ - secret_key_obj_t *sk; - - sk = malloc(sizeof (secret_key_obj_t)); - if (sk == NULL) { - return (CKR_HOST_MEMORY); - } - (void) memcpy(sk, old_secret_key_obj_p, sizeof (secret_key_obj_t)); - - /* copy the secret key value */ - sk->sk_value = malloc((sizeof (CK_BYTE) * sk->sk_value_len)); - if (sk->sk_value == NULL) { - free(sk); - return (CKR_HOST_MEMORY); - } - (void) memcpy(sk->sk_value, old_secret_key_obj_p->sk_value, - (sizeof (CK_BYTE) * sk->sk_value_len)); - - *new_secret_key_obj_p = sk; - - return (CKR_OK); -} - - - -/* - * If CKA_CLASS not given, guess CKA_CLASS using - * attributes on template. - * - * Some attributes are specific to an object class. If one or more - * of these attributes are in the template, make a list of classes - * that can have these attributes. This would speed up the search later, - * because we can immediately skip an object if the class of that - * object can not possibly contain one of the attributes. - * - */ -void -kms_process_find_attr(CK_OBJECT_CLASS *pclasses, - CK_ULONG *num_result_pclasses, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount) -{ - ulong_t i; - int j; - boolean_t secret_found = B_FALSE; - int num_secret_key_attrs; - int num_pclasses = 0; - - for (i = 0; i < ulCount; i++) { - if (pTemplate[i].type == CKA_CLASS) { - /* - * don't need to guess the class, it is specified. - * Just record the class, and return. - */ - pclasses[0] = - (*((CK_OBJECT_CLASS *)pTemplate[i].pValue)); - *num_result_pclasses = 1; - return; - } - } - - num_secret_key_attrs = - sizeof (SECRET_KEY_ATTRS) / sizeof (CK_ATTRIBUTE_TYPE); - - /* - * Get the list of objects class that might contain - * some attributes. - */ - for (i = 0; i < ulCount; i++) { - if (!secret_found) { - for (j = 0; j < num_secret_key_attrs; j++) { - if (pTemplate[i].type == SECRET_KEY_ATTRS[j]) { - secret_found = B_TRUE; - pclasses[num_pclasses++] = - CKO_SECRET_KEY; - break; - } - } - } - } - *num_result_pclasses = num_pclasses; -} - - -boolean_t -kms_find_match_attrs(kms_object_t *obj, CK_OBJECT_CLASS *pclasses, - CK_ULONG num_pclasses, CK_ATTRIBUTE *template, CK_ULONG num_attr) -{ - ulong_t i; - CK_ATTRIBUTE *tmpl_attr, *obj_attr; - uint64_t attr_mask; - boolean_t compare_attr, compare_boolean; - - /* - * Check if the class of this object match with any - * of object classes that can possibly contain the - * requested attributes. - */ - if (num_pclasses > 0) { - for (i = 0; i < num_pclasses; i++) { - if (obj->class == pclasses[i]) { - break; - } - } - if (i == num_pclasses) { - /* - * this object can't possibly contain one or - * more attributes, don't need to check this object - */ - return (B_FALSE); - } - } - - /* need to examine everything */ - for (i = 0; i < num_attr; i++) { - tmpl_attr = &(template[i]); - compare_attr = B_FALSE; - compare_boolean = B_FALSE; - switch (tmpl_attr->type) { - /* First, check the most common attributes */ - case CKA_CLASS: - if (*((CK_OBJECT_CLASS *)tmpl_attr->pValue) != - obj->class) { - return (B_FALSE); - } - break; - case CKA_KEY_TYPE: - if (*((CK_KEY_TYPE *)tmpl_attr->pValue) != - obj->key_type) { - return (B_FALSE); - } - break; - case CKA_ENCRYPT: - attr_mask = (obj->bool_attr_mask) & ENCRYPT_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_DECRYPT: - attr_mask = (obj->bool_attr_mask) & DECRYPT_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_WRAP: - attr_mask = (obj->bool_attr_mask) & WRAP_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_UNWRAP: - attr_mask = (obj->bool_attr_mask) & UNWRAP_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_SIGN: - attr_mask = (obj->bool_attr_mask) & SIGN_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_SIGN_RECOVER: - attr_mask = (obj->bool_attr_mask) & - SIGN_RECOVER_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_VERIFY: - attr_mask = (obj->bool_attr_mask) & VERIFY_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_VERIFY_RECOVER: - attr_mask = (obj->bool_attr_mask) & - VERIFY_RECOVER_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_DERIVE: - attr_mask = (obj->bool_attr_mask) & DERIVE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_LOCAL: - attr_mask = (obj->bool_attr_mask) & LOCAL_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_SENSITIVE: - attr_mask = (obj->bool_attr_mask) & SENSITIVE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_SECONDARY_AUTH: - attr_mask = (obj->bool_attr_mask) & - SECONDARY_AUTH_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_TRUSTED: - attr_mask = (obj->bool_attr_mask) & TRUSTED_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_EXTRACTABLE: - attr_mask = (obj->bool_attr_mask) & - EXTRACTABLE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_ALWAYS_SENSITIVE: - attr_mask = (obj->bool_attr_mask) & - ALWAYS_SENSITIVE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_NEVER_EXTRACTABLE: - attr_mask = (obj->bool_attr_mask) & - NEVER_EXTRACTABLE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_TOKEN: - attr_mask = (obj->bool_attr_mask) & TOKEN_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_PRIVATE: - attr_mask = (obj->bool_attr_mask) & PRIVATE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_MODIFIABLE: - attr_mask = (obj->bool_attr_mask) & MODIFIABLE_BOOL_ON; - compare_boolean = B_TRUE; - break; - case CKA_SUBJECT: - case CKA_ID: - case CKA_START_DATE: - case CKA_END_DATE: - case CKA_KEY_GEN_MECHANISM: - case CKA_LABEL: - /* find these attributes from extra_attrlistp */ - obj_attr = get_extra_attr(tmpl_attr->type, obj); - compare_attr = B_TRUE; - break; - case CKA_VALUE_LEN: - /* only secret key has this attribute */ - if (obj->class == CKO_SECRET_KEY) { - if (*((CK_ULONG *)tmpl_attr->pValue) != - OBJ_SEC_VALUE_LEN(obj)) { - return (B_FALSE); - } - } else { - return (B_FALSE); - } - break; - case CKA_VALUE: - switch (obj->class) { - case CKO_SECRET_KEY: - break; - default: - return (B_FALSE); - } - break; - case CKA_VALUE_BITS: - case CKA_PRIME_BITS: - case CKA_SUBPRIME_BITS: - default: - /* - * any other attributes are currently not supported. - * so, it's not possible for them to be in the - * object - */ - return (B_FALSE); - } - if (compare_boolean) { - CK_BBOOL bval; - - if (attr_mask) { - bval = TRUE; - } else { - bval = FALSE; - } - if (bval != *((CK_BBOOL *)tmpl_attr->pValue)) { - return (B_FALSE); - } - } else if (compare_attr) { - if (obj_attr == NULL) { - /* - * The attribute type is valid, and its value - * has not been initialized in the object. In - * this case, it only matches the template's - * attribute if the template's value length - * is 0. - */ - if (tmpl_attr->ulValueLen != 0) - return (B_FALSE); - } else { - if (tmpl_attr->ulValueLen != - obj_attr->ulValueLen) { - return (B_FALSE); - } - if (memcmp(tmpl_attr->pValue, obj_attr->pValue, - tmpl_attr->ulValueLen) != 0) { - return (B_FALSE); - } - } - } - } - return (B_TRUE); -} - -CK_ATTRIBUTE_PTR -get_extra_attr(CK_ATTRIBUTE_TYPE type, kms_object_t *obj) -{ - CK_ATTRIBUTE_INFO_PTR tmp; - - tmp = obj->extra_attrlistp; - while (tmp != NULL) { - if (tmp->attr.type == type) { - return (&(tmp->attr)); - } - tmp = tmp->next; - } - /* if get there, the specified attribute is not found */ - return (NULL); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsCrypt.h --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsCrypt.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef _KMSCRYPT_H -#define _KMSCRYPT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#ifdef USESOLARIS_AES -#include -#else -#include -#define CBC_MODE AES_CBC_MODE -#endif -#include -#include "kmsObject.h" -#include "kmsSession.h" - -typedef struct kms_aes_ctx { - void *key_sched; /* pointer to key schedule */ - size_t keysched_len; /* Length of the key schedule */ - uint8_t ivec[AES_BLOCK_LEN]; /* initialization vector */ - uint8_t data[AES_BLOCK_LEN]; /* for use by update */ - size_t remain_len; /* for use by update */ - void *aes_cbc; /* to be used by CBC mode */ -} kms_aes_ctx_t; - -/* - * Function Prototypes. - */ -void *aes_cbc_ctx_init(void *, size_t, uint8_t *); - -CK_RV kms_aes_crypt_init_common(kms_session_t *, CK_MECHANISM_PTR, - kms_object_t *, boolean_t); - -CK_RV kms_aes_encrypt_common(kms_session_t *, CK_BYTE_PTR, CK_ULONG, - CK_BYTE_PTR, CK_ULONG_PTR, boolean_t); - -CK_RV kms_aes_decrypt_common(kms_session_t *, CK_BYTE_PTR, CK_ULONG, - CK_BYTE_PTR, CK_ULONG_PTR, boolean_t); - -CK_RV kms_aes_encrypt_final(kms_session_t *, CK_BYTE_PTR, CK_ULONG_PTR); -CK_RV kms_aes_decrypt_final(kms_session_t *, CK_BYTE_PTR, CK_ULONG_PTR); - -void kms_crypt_cleanup(kms_session_t *, boolean_t, boolean_t); - -#ifdef __cplusplus -} -#endif - -#endif /* _KMSCRYPT_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsDecrypt.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsDecrypt.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,405 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsCrypt.h" - - -/* - * kms_decrypt_init() - * - * Arguments: - * session_p: pointer to kms_session_t struct - * pMechanism: pointer to CK_MECHANISM struct provided by application - * key_p: pointer to key kms_object_t struct - * - * Description: - * called by C_DecryptInit(). This function calls the corresponding - * decrypt init routine based on the mechanism. - * - * Returns: - * CKR_OK: success - * CKR_HOST_MEMORY: run out of system memory - * CKR_MECHANISM_PARAM_INVALID: invalid parameters in mechanism - * CKR_MECHANISM_INVALID: invalid mechanism type - * CKR_KEY_TYPE_INCONSISTENT: incorrect type of key to use - * with the specified mechanism - */ -CK_RV -kms_decrypt_init(kms_session_t *session_p, CK_MECHANISM_PTR pMechanism, - kms_object_t *key_p) -{ - - CK_RV rv; - - switch (pMechanism->mechanism) { - case CKM_AES_CBC: - case CKM_AES_CBC_PAD: - { - kms_aes_ctx_t *kms_aes_ctx; - - if (key_p->key_type != CKK_AES) { - return (CKR_KEY_TYPE_INCONSISTENT); - } - - if ((pMechanism->pParameter == NULL) || - (pMechanism->ulParameterLen != AES_BLOCK_LEN)) { - return (CKR_MECHANISM_PARAM_INVALID); - } - - rv = kms_aes_crypt_init_common(session_p, pMechanism, - key_p, B_FALSE); - - if (rv != CKR_OK) - return (rv); - - (void) pthread_mutex_lock(&session_p->session_mutex); - - kms_aes_ctx = (kms_aes_ctx_t *)session_p->decrypt.context; - - /* Save Initialization Vector (IV) in the context. */ - (void) memcpy(kms_aes_ctx->ivec, pMechanism->pParameter, - AES_BLOCK_LEN); - - /* Allocate a context for AES cipher-block chaining. */ - kms_aes_ctx->aes_cbc = (void *)aes_cbc_ctx_init( - kms_aes_ctx->key_sched, kms_aes_ctx->keysched_len, - kms_aes_ctx->ivec); - - if (kms_aes_ctx->aes_cbc == NULL) { - bzero(kms_aes_ctx->key_sched, - kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - free(session_p->decrypt.context); - session_p->decrypt.context = NULL; - (void) pthread_mutex_unlock(&session_p->session_mutex); - return (CKR_HOST_MEMORY); - } - - (void) pthread_mutex_unlock(&session_p->session_mutex); - - return (rv); - } - default: - return (CKR_MECHANISM_INVALID); - } -} - -CK_RV -C_DecryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) -{ - CK_RV rv; - kms_session_t *session_p; - kms_object_t *key_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - if (pMechanism == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - /* Obtain the object pointer. */ - HANDLE2OBJECT(hKey, key_p, rv); - if (rv != CKR_OK) - goto clean_exit; - - /* Check to see if key object allows for decryption. */ - if (!(key_p->bool_attr_mask & DECRYPT_BOOL_ON)) { - rv = CKR_KEY_FUNCTION_NOT_PERMITTED; - goto clean_exit1; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* Check to see if decrypt operation is already active. */ - if (session_p->decrypt.flags & CRYPTO_OPERATION_ACTIVE) { - /* free the memory to avoid memory leak */ - kms_crypt_cleanup(session_p, B_FALSE, lock_held); - } - - /* - * This active flag will remain ON until application calls either - * C_Decrypt or C_DecryptFinal to actually obtain the final piece - * of plaintext. - */ - session_p->decrypt.flags = CRYPTO_OPERATION_ACTIVE; - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_decrypt_init(session_p, pMechanism, key_p); - - if (rv != CKR_OK) { - (void) pthread_mutex_lock(&session_p->session_mutex); - session_p->decrypt.flags &= ~CRYPTO_OPERATION_ACTIVE; - lock_held = B_TRUE; - } - -clean_exit1: - OBJ_REFRELE(key_p); -clean_exit: - REFRELE(session_p, lock_held); - return (rv); -} - -CK_RV -C_Decrypt(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, - CK_ULONG ulEncryptedData, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) -{ - CK_RV rv; - kms_session_t *session_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obatin the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* - * Only check if input buffer is null. How to handle zero input - * length depents on the mechanism in use. For secret key mechanisms, - * unpadded ones yield zero length output, but padded ones always - * result in smaller than original, possibly zero, length output. - */ - if (pEncryptedData == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - /* - * No need to check pData because application might - * just want to know the length of decrypted data. - */ - if (pulDataLen == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* Application must call C_DecryptInit before calling C_Decrypt. */ - if (!(session_p->decrypt.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - /* - * C_Decrypt must be called without intervening C_DecryptUpdate - * calls. - */ - if (session_p->decrypt.flags & CRYPTO_OPERATION_UPDATE) { - /* - * C_Decrypt can not be used to terminate a multi-part - * operation, so we'll leave the active decrypt operation - * flag on and let the application continue with the - * decrypt update operation. - */ - REFRELE(session_p, lock_held); - return (CKR_FUNCTION_FAILED); - } - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_aes_decrypt_common(session_p, pEncryptedData, - ulEncryptedData, pData, pulDataLen, FALSE); - - if ((rv == CKR_BUFFER_TOO_SMALL) || - (pData == NULL && rv == CKR_OK)) { - /* - * We will not terminate the active decrypt operation flag, - * when the application-supplied buffer is too small, or - * the application asks for the length of buffer to hold - * the plaintext. - */ - REFRELE(session_p, lock_held); - return (rv); - } - -clean_exit: - /* Clear context, free key, and release session counter */ - kms_crypt_cleanup(session_p, B_FALSE, B_FALSE); - - return (rv); -} - -CK_RV -C_DecryptUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, - CK_ULONG_PTR pulPartLen) -{ - - CK_RV rv; - kms_session_t *session_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* - * Only check if input buffer is null. How to handle zero input - * length depents on the mechanism in use. For secret key mechanisms, - * unpadded ones yeild zero length output, but padded ones always - * result in smaller than original, possibly zero, length output. - */ - if (pEncryptedPart == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - /* - * Only check if pulPartLen is NULL. - * No need to check if pPart is NULL because application - * might just ask for the length of buffer to hold the - * recovered data. - */ - if (pulPartLen == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* - * Application must call C_DecryptInit before calling - * C_DecryptUpdate. - */ - if (!(session_p->decrypt.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - session_p->decrypt.flags |= CRYPTO_OPERATION_UPDATE; - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_aes_decrypt_common(session_p, pEncryptedPart, - ulEncryptedPartLen, pPart, pulPartLen, B_TRUE); - - /* - * If CKR_OK or CKR_BUFFER_TOO_SMALL, don't terminate the - * current decryption operation. - */ - if ((rv == CKR_OK) || (rv == CKR_BUFFER_TOO_SMALL)) { - REFRELE(session_p, lock_held); - return (rv); - } - -clean_exit: - /* - * After an error occurred, terminate the current decrypt - * operation by resetting the active and update flags. - */ - kms_crypt_cleanup(session_p, B_FALSE, lock_held); - - return (rv); -} - -CK_RV -C_DecryptFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, - CK_ULONG_PTR pulLastPartLen) -{ - - CK_RV rv; - kms_session_t *session_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - if (pulLastPartLen == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* - * Application must call C_DecryptInit before calling - * C_DecryptFinal. - */ - if (!(session_p->decrypt.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_aes_decrypt_final(session_p, pLastPart, pulLastPartLen); - - if ((rv == CKR_BUFFER_TOO_SMALL) || - (pLastPart == NULL && rv == CKR_OK)) { - /* - * We will not terminate the active decrypt operation flag, - * when the application-supplied buffer is too small, or - * the application asks for the length of buffer to hold - * the plaintext. - */ - REFRELE(session_p, lock_held); - return (rv); - } - - /* Terminates the active encrypt operation. */ - (void) pthread_mutex_lock(&session_p->session_mutex); - session_p->decrypt.flags = 0; - lock_held = B_TRUE; - REFRELE(session_p, lock_held); - return (rv); - -clean_exit: - /* Terminates the active decrypt operation */ - kms_crypt_cleanup(session_p, B_FALSE, lock_held); - - return (rv); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsDigest.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsDigest.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include "kmsGlobal.h" - -/*ARGSUSED*/ -CK_RV -C_DigestInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_Digest(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_DigestUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_DigestKey(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_DigestFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, - CK_ULONG_PTR pulDigestLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsDualCrypt.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsDualCrypt.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include -#include "kmsGlobal.h" - -/*ARGSUSED*/ -CK_RV -C_DigestEncryptUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_DecryptDigestUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_SignEncryptUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_DecryptVerifyUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsEncrypt.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsEncrypt.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,424 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsCrypt.h" - -static CK_RV -kms_encrypt_init(kms_session_t *session_p, CK_MECHANISM_PTR pMechanism, - kms_object_t *key_p) -{ - CK_RV rv = CKR_OK; - kms_aes_ctx_t *kms_aes_ctx; - - if (pMechanism->mechanism != CKM_AES_CBC && - pMechanism->mechanism != CKM_AES_CBC_PAD) - return (CKR_MECHANISM_INVALID); - - if (key_p->key_type != CKK_AES) { - return (CKR_KEY_TYPE_INCONSISTENT); - } - - if ((pMechanism->pParameter == NULL) || - (pMechanism->ulParameterLen != AES_BLOCK_LEN)) { - return (CKR_MECHANISM_PARAM_INVALID); - } - - rv = kms_aes_crypt_init_common(session_p, pMechanism, - key_p, B_TRUE); - - if (rv != CKR_OK) - return (rv); - - (void) pthread_mutex_lock(&session_p->session_mutex); - - kms_aes_ctx = (kms_aes_ctx_t *)session_p->encrypt.context; - /* Copy Initialization Vector (IV) into the context. */ - - (void) memcpy(kms_aes_ctx->ivec, pMechanism->pParameter, - AES_BLOCK_LEN); - - /* Allocate a context for AES cipher-block chaining. */ - kms_aes_ctx->aes_cbc = (void *)aes_cbc_ctx_init( - kms_aes_ctx->key_sched, kms_aes_ctx->keysched_len, - kms_aes_ctx->ivec); - - if (kms_aes_ctx->aes_cbc == NULL) { - bzero(kms_aes_ctx->key_sched, - kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - free(session_p->encrypt.context); - session_p->encrypt.context = NULL; - rv = CKR_HOST_MEMORY; - } - - (void) pthread_mutex_unlock(&session_p->session_mutex); - - return (rv); -} - -void -kms_crypt_cleanup(kms_session_t *session_p, boolean_t encrypt, - boolean_t lock_held) -{ - kms_active_op_t *active_op; - boolean_t lock_true = B_TRUE; - kms_aes_ctx_t *kms_aes_ctx; - aes_ctx_t *aes_ctx; - - if (!lock_held) - (void) pthread_mutex_lock(&session_p->session_mutex); - - active_op = (encrypt) ? &(session_p->encrypt) : &(session_p->decrypt); - if (active_op->mech.mechanism != CKM_AES_CBC && - active_op->mech.mechanism != CKM_AES_CBC_PAD) - return; - - kms_aes_ctx = (kms_aes_ctx_t *)active_op->context; - - if (kms_aes_ctx != NULL) { - aes_ctx = (aes_ctx_t *)kms_aes_ctx->aes_cbc; - if (aes_ctx != NULL) { - bzero(aes_ctx->ac_keysched, aes_ctx->ac_keysched_len); - free(kms_aes_ctx->aes_cbc); - bzero(kms_aes_ctx->key_sched, - kms_aes_ctx->keysched_len); - free(kms_aes_ctx->key_sched); - } - } - if (active_op->context != NULL) { - free(active_op->context); - active_op->context = NULL; - } - active_op->flags = 0; - if (!lock_held) - REFRELE(session_p, lock_true); -} - -CK_RV -C_EncryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) -{ - CK_RV rv; - kms_session_t *session_p; - kms_object_t *key_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - if (pMechanism == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - if (pMechanism->mechanism != CKM_AES_CBC && - pMechanism->mechanism != CKM_AES_CBC_PAD) - return (CKR_MECHANISM_INVALID); - - /* Obtain the object pointer. */ - HANDLE2OBJECT(hKey, key_p, rv); - if (rv != CKR_OK) - goto clean_exit; - - /* Check to see if key object allows for encryption. */ - if (!(key_p->bool_attr_mask & ENCRYPT_BOOL_ON)) { - rv = CKR_KEY_FUNCTION_NOT_PERMITTED; - goto clean_exit1; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* Check to see if encrypt operation is already active. */ - if (session_p->encrypt.flags & CRYPTO_OPERATION_ACTIVE) { - /* free the memory to avoid memory leak */ - kms_crypt_cleanup(session_p, B_TRUE, lock_held); - } - - /* - * This active flag will remain ON until application calls either - * C_Encrypt or C_EncryptFinal to actually obtain the final piece - * of ciphertext. - */ - session_p->encrypt.flags = CRYPTO_OPERATION_ACTIVE; - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_encrypt_init(session_p, pMechanism, key_p); - - if (rv != CKR_OK) { - (void) pthread_mutex_lock(&session_p->session_mutex); - session_p->encrypt.flags &= ~CRYPTO_OPERATION_ACTIVE; - lock_held = B_TRUE; - } - -clean_exit1: - OBJ_REFRELE(key_p); -clean_exit: - REFRELE(session_p, lock_held); - return (rv); -} - - -CK_RV -C_Encrypt(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen) -{ - CK_RV rv; - kms_session_t *session_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* - * Only check if input buffer is null. How to handle zero input - * length depends on the mechanism in use. For secret key mechanisms, - * unpadded ones yield zero length output, but padded ones always - * result in greater than zero length output. - */ - if (pData == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - /* - * Only check if pulEncryptedDataLen is NULL. - * No need to check if pEncryptedData is NULL because - * application might just ask for the length of buffer to hold - * the ciphertext. - */ - if (pulEncryptedDataLen == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* Application must call C_EncryptInit before calling C_Encrypt. */ - if (!(session_p->encrypt.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - /* - * C_Encrypt must be called without intervening C_EncryptUpdate - * calls. - */ - if (session_p->encrypt.flags & CRYPTO_OPERATION_UPDATE) { - /* - * C_Encrypt can not be used to terminate a multi-part - * operation, so we'll leave the active encrypt operation - * flag on and let the application continue with the - * encrypt update operation. - */ - REFRELE(session_p, lock_held); - return (CKR_FUNCTION_FAILED); - } - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_aes_encrypt_common(session_p, pData, ulDataLen, pEncryptedData, - pulEncryptedDataLen, 0); - - if ((rv == CKR_BUFFER_TOO_SMALL) || - (pEncryptedData == NULL && rv == CKR_OK)) { - /* - * We will not terminate the active encrypt operation flag, - * when the application-supplied buffer is too small, or - * the application asks for the length of buffer to hold - * the ciphertext. - */ - REFRELE(session_p, lock_held); - return (rv); - } - -clean_exit: - /* Clear context, free key, and release session counter */ - kms_crypt_cleanup(session_p, B_TRUE, B_FALSE); - return (rv); -} - -CK_RV -C_EncryptUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen) -{ - - CK_RV rv; - kms_session_t *session_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* - * Only check if input buffer is null. How to handle zero input - * length depends on the mechanism in use. For secret key mechanisms, - * unpadded ones yeild zero length output, but padded ones always - * result in greater than zero length output. - */ - if (pPart == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - /* - * Only check if pulEncryptedPartLen is NULL. - * No need to check if pEncryptedPart is NULL because - * application might just ask for the length of buffer to hold - * the ciphertext. - */ - if (pulEncryptedPartLen == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* - * Application must call C_EncryptInit before calling - * C_EncryptUpdate. - */ - if (!(session_p->encrypt.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - session_p->encrypt.flags |= CRYPTO_OPERATION_UPDATE; - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_aes_encrypt_common(session_p, pPart, ulPartLen, - pEncryptedPart, pulEncryptedPartLen, B_TRUE); - - /* - * If CKR_OK or CKR_BUFFER_TOO_SMALL, don't terminate the - * current encryption operation. - */ - if ((rv == CKR_OK) || (rv == CKR_BUFFER_TOO_SMALL)) { - REFRELE(session_p, lock_held); - return (rv); - } - -clean_exit: - /* - * After an error occurred, terminate the current encrypt - * operation by resetting the active and update flags. - */ - kms_crypt_cleanup(session_p, B_TRUE, lock_held); - - return (rv); -} - - -CK_RV -C_EncryptFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, - CK_ULONG_PTR pulLastEncryptedPartLen) -{ - - CK_RV rv; - kms_session_t *session_p; - boolean_t lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer. */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - if (pulLastEncryptedPartLen == NULL) { - rv = CKR_ARGUMENTS_BAD; - goto clean_exit; - } - - (void) pthread_mutex_lock(&session_p->session_mutex); - lock_held = B_TRUE; - - /* - * Application must call C_EncryptInit before calling - * C_EncryptFinal. - */ - if (!(session_p->encrypt.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - (void) pthread_mutex_unlock(&session_p->session_mutex); - lock_held = B_FALSE; - - rv = kms_aes_encrypt_final(session_p, pLastEncryptedPart, - pulLastEncryptedPartLen); - - if ((rv == CKR_BUFFER_TOO_SMALL) || - (pLastEncryptedPart == NULL && rv == CKR_OK)) { - /* - * We will not terminate the active encrypt operation flag, - * when the application-supplied buffer is too small, or - * the application asks for the length of buffer to hold - * the ciphertext. - */ - REFRELE(session_p, lock_held); - return (rv); - } - - /* Terminates the active encrypt operation. */ - (void) pthread_mutex_lock(&session_p->session_mutex); - session_p->encrypt.flags = 0; - lock_held = B_TRUE; - REFRELE(session_p, lock_held); - - return (rv); - -clean_exit: - /* Terminates the active encrypt operation. */ - kms_crypt_cleanup(session_p, B_TRUE, lock_held); - - return (rv); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsGeneral.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsGeneral.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,548 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include /* for pid */ -#include -#include - -#include "kmsKeystoreUtil.h" -#include "kmsGlobal.h" -#include "kmsSession.h" -#include "kmsSlot.h" - -/* - * PKCS#11 KMS Crypto provider module. - * - * This module provides access to a Key Management System (v 2.0) - * through the Solaris Cryptographic Framework interfaces (PKCS#11). - * - * PREREQUISITES - * ============= - * 1. You must have access to a KMS on the network and you must - * know the IP address and name of the "Agent" assigned to - * you and the passphrase needed to access the Agent information. - * - * 2. The token configuration must be completed prior - * to using this provider using the kmscfg(1m) utility. - * - * This provider provides support for 3 AES mechanisms: - * CKM_AES_KEY_GEN (for 256 bit keys only) - * CKM_AES_CBC (encrypt/decrypt) - * CKM_AES_CBC_PAD (encrypt/decrypt) - * - * DETAILS - * ======= - * Each user has their own local configuration for the KMS. - * The local configuration information is typically located - * in a private token directory - /var/tmp/kms/$USERNAME - * The location may be overridden using an environment variable - * $KMSTOKEN_DIR. The user's private token namespace is configured - * using kmscfg(1M) which establishes the directory and populates - * it with a simple configuration file that this module later uses - * to access the KMS. - * - * INITIALIZING - * ============ - * Once the token configuration is established, C_InitToken - * is used to initialize the first contact with the KMS. This - * will cause the provider to contact the KMS and download - * the profile configuration data, a server certificate, and a - * private entity key and certificate (in a PKCS#12 file). - * Once the above data is collected it is stored under $KMSTOKEN_DIR. - * The user may then proceed with normal PKCS#11 activity. - * - * LOGIN - * ===== - * The concept of a "Login" is established when the user provides - * a PIN that will successfully unwrap the private data in the - * PKCS#12 file downloaded earlier when C_InitToken was called. - * If the PKCS#12 file is successfully opened, then the user - * is considered "logged in" and may use the private key and - * certificate to initiate secure communications with the KMS. - * - * CHANGE PIN - * ========== - * The C_SetPIN interface may be used to change the passphrase - * on the PKCS#12 file and thus effectively change the passphrase - * for the token itself (even though the wrapped private key and - * certificate do not change). - * - * KEY STORAGE - * =========== - * Keys generated in the KMS are always kept securely in the KMS. - * The local token area contains only a list of CKA_LABEL values - * for all successfully created keys, no sensitive key data - * is stored on the client system. When a key is "destroyed", the - * local references to that key's label is removed and it is no - * longer visible to the token provider. - * - * NOTE: The KMS itself does not have an interface for destroying - * keys, it only allows for the keys to be disassociated from - * a particular "DataUnit". Key labels should not be re-used. - */ -#pragma init(kms_init) -#pragma fini(kms_fini) - -static struct CK_FUNCTION_LIST functionList = { - { 2, 20 }, /* version */ - C_Initialize, - C_Finalize, - C_GetInfo, - C_GetFunctionList, - C_GetSlotList, - C_GetSlotInfo, - C_GetTokenInfo, - C_GetMechanismList, - C_GetMechanismInfo, - C_InitToken, - C_InitPIN, - C_SetPIN, - C_OpenSession, - C_CloseSession, - C_CloseAllSessions, - C_GetSessionInfo, - C_GetOperationState, - C_SetOperationState, - C_Login, - C_Logout, - C_CreateObject, - C_CopyObject, - C_DestroyObject, - C_GetObjectSize, - C_GetAttributeValue, - C_SetAttributeValue, - C_FindObjectsInit, - C_FindObjects, - C_FindObjectsFinal, - C_EncryptInit, - C_Encrypt, - C_EncryptUpdate, - C_EncryptFinal, - C_DecryptInit, - C_Decrypt, - C_DecryptUpdate, - C_DecryptFinal, - C_DigestInit, - C_Digest, - C_DigestUpdate, - C_DigestKey, - C_DigestFinal, - C_SignInit, - C_Sign, - C_SignUpdate, - C_SignFinal, - C_SignRecoverInit, - C_SignRecover, - C_VerifyInit, - C_Verify, - C_VerifyUpdate, - C_VerifyFinal, - C_VerifyRecoverInit, - C_VerifyRecover, - C_DigestEncryptUpdate, - C_DecryptDigestUpdate, - C_SignEncryptUpdate, - C_DecryptVerifyUpdate, - C_GenerateKey, - C_GenerateKeyPair, - C_WrapKey, - C_UnwrapKey, - C_DeriveKey, - C_SeedRandom, - C_GenerateRandom, - C_GetFunctionStatus, - C_CancelFunction, - C_WaitForSlotEvent -}; - -boolean_t kms_initialized = B_FALSE; -static pid_t kms_pid = 0; - - -/* protects kms_initialized and entrance to C_Initialize/Finalize */ -static pthread_mutex_t globalmutex = PTHREAD_MUTEX_INITIALIZER; - -ses_to_be_freed_list_t ses_delay_freed; -object_to_be_freed_list_t obj_delay_freed; -kms_elem_t **kms_mechhash; /* Hash table for kCF mech numbers */ - -static void kms_finalize_common(); -static void kms_cleanup_library(); -static void kms_init(); -static void kms_fini(); -static void kms_fork_prepare(); -static void kms_fork_after(); - -CK_RV -C_Initialize(CK_VOID_PTR pInitArgs) -{ - int initialize_pid; - boolean_t supplied_ok; - CK_RV rv = CKR_OK; - - /* - * Grab lock to insure that only one thread enters this - * function at a time. - */ - (void) pthread_mutex_lock(&globalmutex); - initialize_pid = getpid(); - - if (kms_initialized) { - if (initialize_pid == kms_pid) { - /* - * This process has called C_Initialize already - */ - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_CRYPTOKI_ALREADY_INITIALIZED); - } else { - /* - * A fork has happened and the child is - * reinitializing. Do a kms_cleanup_library to close - * out any state from the parent, and then - * continue on. - */ - kms_cleanup_library(); - } - } - - if (pInitArgs != NULL) { - CK_C_INITIALIZE_ARGS *initargs1 = - (CK_C_INITIALIZE_ARGS *) pInitArgs; - - /* pReserved must be NULL */ - if (initargs1->pReserved != NULL) { - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_ARGUMENTS_BAD); - } - - /* - * ALL supplied function pointers need to have the value - * either NULL or non-NULL. - */ - supplied_ok = (initargs1->CreateMutex == NULL && - initargs1->DestroyMutex == NULL && - initargs1->LockMutex == NULL && - initargs1->UnlockMutex == NULL) || - (initargs1->CreateMutex != NULL && - initargs1->DestroyMutex != NULL && - initargs1->LockMutex != NULL && - initargs1->UnlockMutex != NULL); - - if (!supplied_ok) { - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_ARGUMENTS_BAD); - } - - /* - * When the CKF_OS_LOCKING_OK flag isn't set and mutex - * function pointers are supplied by an application, - * return an error. We must be able to use our own locks. - */ - if (!(initargs1->flags & CKF_OS_LOCKING_OK) && - (initargs1->CreateMutex != NULL)) { - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_CANT_LOCK); - } - } - - /* Create the hash table */ - kms_mechhash = calloc(KMECH_HASHTABLE_SIZE, sizeof (void *)); - if (kms_mechhash == NULL) { - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_HOST_MEMORY); - } - - /* Initialize the slot table */ - rv = kms_slottable_init(); - if (rv != CKR_OK) { - free(kms_mechhash); - goto end; - } - - /* Initialize the object_to_be_freed list */ - (void) pthread_mutex_init(&obj_delay_freed.obj_to_be_free_mutex, NULL); - obj_delay_freed.count = 0; - obj_delay_freed.first = NULL; - obj_delay_freed.last = NULL; - - /* Initialize the session_to_be_freed list */ - (void) pthread_mutex_init(&ses_delay_freed.ses_to_be_free_mutex, NULL); - ses_delay_freed.count = 0; - ses_delay_freed.first = NULL; - ses_delay_freed.last = NULL; - - rv = KMS_Initialize(); - if (rv != CKR_OK) { - free(kms_mechhash); - goto end; - } - - kms_initialized = B_TRUE; - kms_pid = initialize_pid; - -end: - (void) pthread_mutex_unlock(&globalmutex); - - return (CKR_OK); -} - -/* - * C_Finalize is a wrapper around kms_finalize_common. The - * globalmutex should be locked by C_Finalize(). - */ -CK_RV -C_Finalize(CK_VOID_PTR pReserved) -{ - (void) pthread_mutex_lock(&globalmutex); - - if (!kms_initialized) { - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_CRYPTOKI_NOT_INITIALIZED); - } - - /* Check to see if pReseved is NULL */ - if (pReserved != NULL) { - (void) pthread_mutex_unlock(&globalmutex); - return (CKR_ARGUMENTS_BAD); - } - - /* - * Delete all the sessions for each slot and release the allocated - * resources - */ - kms_delete_all_sessions(B_FALSE); - - kms_finalize_common(); - - (void) pthread_mutex_unlock(&globalmutex); - - return (CKR_OK); -} - -/* - * kms_finalize_common() does the work for C_Finalize. globalmutex - * must be held before calling this function. - */ -static void -kms_finalize_common() { - - int i; - kms_elem_t *elem, *next; - kms_object_t *delay_free_obj, *tmpo; - kms_session_t *delay_free_ses, *tmps; - - cleanup_slottable(); - /* Walk the hash table and free all entries */ - for (i = 0; i < KMECH_HASHTABLE_SIZE; i++) { - elem = kms_mechhash[i]; - while (elem != NULL) { - next = elem->knext; - free(elem); - elem = next; - } - } - - free(kms_mechhash); - - kms_mechhash = NULL; - kms_initialized = B_FALSE; - kms_pid = 0; - - /* - * free all entries in the delay_freed list - */ - delay_free_obj = obj_delay_freed.first; - while (delay_free_obj != NULL) { - tmpo = delay_free_obj->next; - free(delay_free_obj); - delay_free_obj = tmpo; - } - obj_delay_freed.count = 0; - obj_delay_freed.first = NULL; - obj_delay_freed.last = NULL; - (void) pthread_mutex_destroy(&obj_delay_freed.obj_to_be_free_mutex); - - delay_free_ses = ses_delay_freed.first; - while (delay_free_ses != NULL) { - tmps = delay_free_ses->next; - free(delay_free_ses); - delay_free_ses = tmps; - } - ses_delay_freed.count = 0; - ses_delay_freed.first = NULL; - ses_delay_freed.last = NULL; - (void) pthread_mutex_destroy(&ses_delay_freed.ses_to_be_free_mutex); -} - -/* - * This function cleans up all the resources in the library (user space only) - */ -static void -kms_cleanup_library() -{ - kms_slot_t *pslot = get_slotinfo(); - - if (pslot) - kms_cleanup_pri_objects_in_slot(pslot, NULL); - - /* - * Delete all the sessions for each slot and release the allocated - * resources from the library. The boolean argument TRUE indicates - * that we only wants to clean up the resource in the library only. - * We don't want to clean up the corresponding kernel part of - * resources, because they are used by the parent process still. - */ - kms_delete_all_sessions(B_TRUE); - - kms_finalize_common(); -} - -static void -kms_init() -{ - (void) pthread_atfork(kms_fork_prepare, kms_fork_after, - kms_fork_after); -} - -/* - * kms_fini() function required to make sure complete cleanup - * is done if pkcs11_kms is ever unloaded without - * a C_Finalize() call. - */ -static void -kms_fini() -{ - (void) pthread_mutex_lock(&globalmutex); - - (void) KMS_Finalize(); - - /* if we're not initilized, do not attempt to finalize */ - if (!kms_initialized) { - (void) pthread_mutex_unlock(&globalmutex); - return; - } - - kms_cleanup_library(); - - (void) pthread_mutex_unlock(&globalmutex); -} - -CK_RV -C_GetInfo(CK_INFO_PTR pInfo) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (pInfo == NULL) { - return (CKR_ARGUMENTS_BAD); - } - - /* Check if the cryptoki was initialized */ - pInfo->cryptokiVersion.major = CRYPTOKI_VERSION_MAJOR; - pInfo->cryptokiVersion.minor = CRYPTOKI_VERSION_MINOR; - (void) strncpy((char *)pInfo->manufacturerID, - MANUFACTURER_ID, 32); - pInfo->flags = 0; - (void) strncpy((char *)pInfo->libraryDescription, - LIBRARY_DESCRIPTION, 32); - pInfo->libraryVersion.major = LIBRARY_VERSION_MAJOR; - pInfo->libraryVersion.minor = LIBRARY_VERSION_MINOR; - - return (CKR_OK); -} - -CK_RV -C_GetFunctionList(CK_FUNCTION_LIST_PTR_PTR ppFunctionList) -{ - if (ppFunctionList == NULL) { - return (CKR_ARGUMENTS_BAD); - } - - *ppFunctionList = &functionList; - - return (CKR_OK); -} - -/* - * PKCS#11 states that C_GetFunctionStatus should always return - * CKR_FUNCTION_NOT_PARALLEL - */ -/*ARGSUSED*/ -CK_RV -C_GetFunctionStatus(CK_SESSION_HANDLE hSession) -{ - return (CKR_FUNCTION_NOT_PARALLEL); -} - -/* - * Take out all mutexes before fork. - * Order: - * 1. globalmutex - * 2. all slots mutexes (and all their sessions) via - * kms_acquire_all_slots_mutexes() - * 3. obj_delay_freed.obj_to_be_free_mutex; - * 4. ses_delay_freed.ses_to_be_free_mutex - */ -void -kms_fork_prepare() -{ - (void) pthread_mutex_lock(&globalmutex); - if (kms_initialized) { - kms_acquire_all_slots_mutexes(); - (void) pthread_mutex_lock( - &obj_delay_freed.obj_to_be_free_mutex); - (void) pthread_mutex_lock( - &ses_delay_freed.ses_to_be_free_mutex); - } -} - -/* - * Release in opposite order to kms_fork_prepare(). - * Function is used for parent and child. - */ -void -kms_fork_after() -{ - if (kms_initialized) { - (void) pthread_mutex_unlock( - &ses_delay_freed.ses_to_be_free_mutex); - (void) pthread_mutex_unlock( - &obj_delay_freed.obj_to_be_free_mutex); - kms_release_all_slots_mutexes(); - } - (void) pthread_mutex_unlock(&globalmutex); -} - -/* - * PKCS#11 states that C_CancelFunction should always return - * CKR_FUNCTION_NOT_PARALLEL - */ -/*ARGSUSED*/ -CK_RV -C_CancelFunction(CK_SESSION_HANDLE hSession) -{ - return (CKR_FUNCTION_NOT_PARALLEL); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsGlobal.h --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsGlobal.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef _KMSGLOBAL_H -#define _KMSGLOBAL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include "kmsObject.h" - -typedef struct kms_elem { - CK_MECHANISM_TYPE type; - struct kms_elem *knext; /* Next in hash chain */ -} kms_elem_t; - -extern kms_elem_t **kms_mechhash; -extern boolean_t kms_initialized; - -#define KMECH_HASHTABLE_SIZE 67 - -/* CK_INFO: Information about cryptoki */ -#define CRYPTOKI_VERSION_MAJOR 2 -#define CRYPTOKI_VERSION_MINOR 20 -#define MANUFACTURER_ID "Oracle Corporation " -#define LIBRARY_DESCRIPTION "Oracle Key Management System " -#define LIBRARY_VERSION_MAJOR 1 -#define LIBRARY_VERSION_MINOR 0 - -/* CK_SLOT_INFO: Information about our slot */ -#define SLOT_DESCRIPTION "Oracle Key Management System " \ - " " -#define KMS_TOKEN_LABEL "KMS " -#define KMS_TOKEN_MODEL " " -#define KMS_TOKEN_SERIAL " " -#define KMS_TOKEN_FLAGS CKF_LOGIN_REQUIRED -#define MAX_PIN_LEN 256 -#define MIN_PIN_LEN 1 -#define HARDWARE_VERSION_MAJOR 0 -#define HARDWARE_VERSION_MINOR 0 -#define FIRMWARE_VERSION_MAJOR 0 -#define FIRMWARE_VERSION_MINOR 0 - -CK_RV crypto2pkcs11_error_number(uint_t); -CK_RV kms_mech(CK_MECHANISM_TYPE); -unsigned char *get_symmetric_key_value(kms_object_t *); -void free_key_attributes(); - -CK_RV process_object_attributes(CK_ATTRIBUTE_PTR, CK_ULONG, caddr_t *, - CK_BBOOL *); -CK_RV get_object_attributes(CK_ATTRIBUTE_PTR, CK_ULONG, caddr_t); -void free_object_attributes(caddr_t, CK_ULONG); -CK_RV process_found_objects(kms_session_t *, CK_OBJECT_HANDLE *, - CK_ULONG *); -CK_RV get_mechanism_info(kms_slot_t *, CK_MECHANISM_TYPE, - CK_MECHANISM_INFO_PTR, uint32_t *); -CK_RV kms_add_extra_attr(CK_ATTRIBUTE_PTR, kms_object_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* _KMSGLOBAL_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsKeys.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsKeys.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2012 Milan Jurik. All rights reserved. - */ - -#include -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsSession.h" -#include "kmsObject.h" -#include "kmsKeystoreUtil.h" - -static CK_RV -kms_generate_softkey(kms_object_t *keyp) -{ - if ((OBJ_SEC_VALUE(keyp) = malloc(OBJ_SEC_VALUE_LEN(keyp))) == NULL) - return (CKR_HOST_MEMORY); - - if (pkcs11_get_urandom(OBJ_SEC_VALUE(keyp), - OBJ_SEC_VALUE_LEN(keyp)) < 0) - return (CKR_DEVICE_ERROR); - - return (CKR_OK); -} - -CK_RV -C_GenerateKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey) -{ - CK_RV rv = CKR_OK; - kms_session_t *session_p; - kms_object_t *new_objp = NULL; - kms_slot_t *pslot; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Obtain the session pointer */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - if ((pMechanism == NULL) || (phKey == NULL)) { - rv = CKR_ARGUMENTS_BAD; - goto failed_exit; - } - - if ((pTemplate == NULL) && (ulCount != 0)) { - rv = CKR_ARGUMENTS_BAD; - goto failed_exit; - } - - switch (pMechanism->mechanism) { - case CKM_AES_KEY_GEN: - break; - default: - rv = CKR_MECHANISM_INVALID; - goto failed_exit; - } - - /* Create an object record */ - new_objp = kms_new_object(); - if (new_objp == NULL) - return (CKR_HOST_MEMORY); - - new_objp->mechanism = pMechanism->mechanism; - rv = kms_build_object(pTemplate, ulCount, new_objp); - if (rv != CKR_OK) - goto failed_exit; - - /* - * Generate the KMS key. - * - * This will put the AES key value from the KMS key into the - * key object record. - */ - if (new_objp->bool_attr_mask & TOKEN_BOOL_ON) - rv = KMS_GenerateKey(session_p, new_objp); - else - rv = kms_generate_softkey(new_objp); - - if (rv != CKR_OK) - goto failed_exit; - - if (new_objp->bool_attr_mask & TOKEN_BOOL_ON) { - pslot = get_slotinfo(); - if (pslot == NULL) { - rv = CKR_GENERAL_ERROR; - goto failed_exit; - } - kms_add_token_object_to_slot(new_objp, pslot); - } else { - kms_add_object_to_session(new_objp, session_p); - } - - *phKey = (CK_OBJECT_HANDLE)new_objp; - REFRELE(session_p, ses_lock_held); - return (rv); - -failed_exit: - if (new_objp != NULL) - (void) free(new_objp); - - REFRELE(session_p, ses_lock_held); - return (rv); -} - -/*ARGSUSED*/ -CK_RV -C_GenerateKeyPair(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_ATTRIBUTE_PTR pPublicKeyTemplate, CK_ULONG ulPublicKeyAttributeCount, - CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount, - CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_WrapKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, - CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pulWrappedKeyLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_UnwrapKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, - CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_DeriveKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsKeystoreUtil.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsKeystoreUtil.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1227 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "kmsSession.h" -#include "kmsGlobal.h" -#include "kmsObject.h" - -static CK_RV -GetPKCS11StatusFromAgentStatus(KMS_AGENT_STATUS status); - -static char keystore_path[BUFSIZ]; -static boolean_t keystore_path_initialized = B_FALSE; -static time_t last_objlist_mtime = 0; -pthread_mutex_t objlist_mutex = PTHREAD_MUTEX_INITIALIZER; -pthread_mutex_t flock_mutex = PTHREAD_MUTEX_INITIALIZER; - -static struct flock fl = { - 0, - 0, - 0, - 0, - 0, - 0, - {0, 0, 0, 0} -}; - -#define KEYSTORE_PATH "/var/kms" -#define ALTERNATE_KEYSTORE_PATH "KMSTOKEN_DIR" -#define KMS_PROFILE_FILENAME "profile.cfg" -#define KMS_DATAUNIT_DESCRIPTION "Oracle PKCS11/KMS" -#define KMS_ATTR_DESC_PFX "PKCS#11v2.20: " -#define KMSTOKEN_CONFIG_FILENAME "kmstoken.cfg" -#define KMSTOKEN_LABELLIST_FILENAME "objlabels.lst" - -static void -kms_hash_string(char *label, uchar_t *hash) -{ - SHA2_CTX ctx; - - SHA2Init(SHA256, &ctx); - SHA2Update(&ctx, label, strlen(label)); - SHA2Final(hash, &ctx); -} - -static char * -get_username(char *username, int len) -{ - struct passwd pwd, *user_info; - long buflen; - char *pwdbuf = NULL; - - bzero(username, len); - - buflen = sysconf(_SC_GETPW_R_SIZE_MAX); - if (buflen == -1) - return (username); /* should not happen */ - - pwdbuf = calloc(1, buflen); - if (pwdbuf == NULL) - return (username); /* zero-ed earlier */ - - user_info = getpwuid_r(getuid(), &pwd, pwdbuf, buflen); - - if (user_info != NULL) - (void) strlcpy(username, user_info->pw_name, len); - - free(pwdbuf); - return (username); -} - -static char * -kms_get_keystore_path() -{ - char *env_val; - char username[sizeof (((struct utmpx *)0)->ut_user)]; - - if (!keystore_path_initialized) { - env_val = getenv(ALTERNATE_KEYSTORE_PATH); - bzero(keystore_path, sizeof (keystore_path)); - /* - * If it isn't set or is set to the empty string use the - * default location. We need to check for the empty string - * because some users "unset" environment variables by giving - * them no value, this isn't the same thing as removing it - * from the environment. - */ - if ((env_val == NULL) || (strcmp(env_val, "") == 0)) { - /* alternate path not specified, use /var/kms/$USER */ - (void) snprintf(keystore_path, - sizeof (keystore_path), "%s/%s", - KEYSTORE_PATH, - get_username(username, sizeof (username))); - } else { - (void) strlcpy(keystore_path, env_val, - sizeof (keystore_path)); - } - keystore_path_initialized = B_TRUE; - } - return (keystore_path); -} - -static char * -get_non_comment_line(char *cfgbuf, size_t cfglen, char *buf, size_t buflen) -{ - char *s = cfgbuf; - char *end = cfgbuf + cfglen; - char *f; - - /* Skip over blank lines CR/LF */ - while (s < end && (*s == '#' || *s == '\n' || *s == '\r')) { - /* check for comment sign */ - if (*s == '#') { - /* skip the rest of the line */ - while ((*s != '\n' || *s == '\r') && s < end) - s++; - } - if ((s < end) && (*s == '\n' || *s == '\r')) - s++; - } - - if (s < end) { - char save, *e; - f = s; /* mark the beginning. */ - /* Find the end of the line and null terminate it. */ - while (*s != '\n' && *s != '\r' && *s != '#' && s < end) s++; - save = *s; - *s = 0x00; - (void) strncpy(buf, f, buflen); - *s = save; - - /* Strip trailing whitespace */ - f = buf; - e = f + strlen(buf) - 1; - while (e >= f && isspace(*e)) { - *e = 0x00; - e--; - } - - } else { - /* If we reached the end, return NULL */ - s = NULL; - } -done: - return (s); -} - -static int -flock_fd(int fd, int cmd, pthread_mutex_t *mutex) -{ - int ret = 0; - - (void) pthread_mutex_lock(mutex); - - fl.l_type = cmd; - - while ((ret = fcntl(fd, F_SETLKW, &fl)) == -1) { - if (errno != EINTR) - break; - } - (void) pthread_mutex_unlock(mutex); - return (ret); -} - -/* - * Open the keystore description file in the specified mode. - * If the keystore doesn't exist, the "do_create_keystore" - * argument determines if the keystore should be created - */ -static int -open_and_lock_file(char *filename, int cmd, mode_t mode, - pthread_mutex_t *mutex) -{ - int fd; - - fd = open_nointr(filename, mode|O_NONBLOCK); - if (fd < 0) - return (fd); - - if (flock_fd(fd, cmd, mutex)) { - if (fd > 0) - (void) close(fd); - return (-1); - } - - return (fd); -} - -static int -kms_slurp_file(char *file, char *buf, size_t buflen) -{ - int n, fd, total = 0; - - fd = open_and_lock_file(file, F_RDLCK, O_RDONLY, &flock_mutex); - if (fd == -1) - return (-1); - - do { - n = readn_nointr(fd, &buf[total], buflen - total); - if (n != (buflen - total)) - break; - else - total += n; - } while (total < buflen); - - if (flock_fd(fd, F_UNLCK, &flock_mutex)) - total = -1; - - (void) close(fd); - - return (total); -} - -/* - * The KMS token is considered "initialized" if the file with the token - * configuration information is present. - */ -CK_BBOOL -kms_is_initialized() -{ - CK_BBOOL rv; - char *ksdir; - char cfgfile_path[BUFSIZ]; - struct stat statp; - - ksdir = kms_get_keystore_path(); - if (ksdir == NULL) - return (CKR_FUNCTION_FAILED); - - (void) snprintf(cfgfile_path, sizeof (cfgfile_path), - "%s/%s", ksdir, KMSTOKEN_CONFIG_FILENAME); - - if (stat(cfgfile_path, &statp)) - rv = FALSE; - else - rv = TRUE; - - return (rv); -} - -static CK_RV -kms_read_config_data(char *path, kms_cfg_info_t *cfginfo) -{ - CK_RV rv = CKR_OK; - char *cfgbuf = NULL; - char *ptr; - char buf[BUFSIZ]; - size_t buflen = 0, remain; - struct stat statp; - - if (path == NULL || cfginfo == NULL) - return (CKR_ARGUMENTS_BAD); - - if (stat(path, &statp) == -1) { - return (CKR_FUNCTION_FAILED); - } - - cfgbuf = calloc(1, statp.st_size); - if (cfgbuf == NULL) - return (CKR_HOST_MEMORY); - - buflen = kms_slurp_file(path, cfgbuf, statp.st_size); - if (buflen != statp.st_size) { - free(cfgbuf); - return (CKR_FUNCTION_FAILED); - } - - remain = buflen; - ptr = cfgbuf; - ptr = get_non_comment_line(ptr, remain, - cfginfo->name, sizeof (cfginfo->name)); - if (ptr == NULL) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - remain = buflen - (ptr - cfgbuf); - ptr = get_non_comment_line(ptr, remain, - cfginfo->agentId, sizeof (cfginfo->agentId)); - if (ptr == 0) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - remain = buflen - (ptr - cfgbuf); - ptr = get_non_comment_line(ptr, remain, - cfginfo->agentAddr, sizeof (cfginfo->agentAddr)); - if (ptr == 0) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - remain = buflen - (ptr - cfgbuf); - ptr = get_non_comment_line(ptr, remain, buf, sizeof (buf)); - if (ptr == 0) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - cfginfo->transTimeout = atoi(buf); - - remain = buflen - (ptr - cfgbuf); - ptr = get_non_comment_line(ptr, remain, buf, sizeof (buf)); - if (ptr == 0) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - cfginfo->failoverLimit = atoi(buf); - - remain = buflen - (ptr - cfgbuf); - ptr = get_non_comment_line(ptr, remain, buf, sizeof (buf)); - if (ptr == 0) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - cfginfo->discoveryFreq = atoi(buf); - - remain = buflen - (ptr - cfgbuf); - ptr = get_non_comment_line(ptr, remain, buf, sizeof (buf)); - if (ptr == 0) { - rv = CKR_FUNCTION_FAILED; - goto done; - } - cfginfo->securityMode = atoi(buf); -done: - if (cfgbuf != NULL) - free(cfgbuf); - return (rv); -} - -CK_BBOOL -kms_is_pin_set() -{ - CK_BBOOL rv = TRUE; - kms_cfg_info_t kmscfg; - struct stat statp; - char *ksdir; - char filepath[BUFSIZ]; - - ksdir = kms_get_keystore_path(); - if (ksdir == NULL) - return (FALSE); - - (void) snprintf(filepath, sizeof (filepath), - "%s/%s", ksdir, KMSTOKEN_CONFIG_FILENAME); - - if ((rv = kms_read_config_data(filepath, &kmscfg))) - return (FALSE); - - /* - * The PK12 file is only established once the user has enrolled - * and is thus considered having a PIN set. - */ - (void) snprintf(filepath, sizeof (filepath), - "%s/%s/%s", ksdir, kmscfg.agentId, CLIENT_PK12_FILE); - - if (stat(filepath, &statp)) - rv = FALSE; /* file doesn't exist. */ - else - rv = TRUE; /* File exists, PIN is set */ - - return (rv); -} - -void -kms_clear_label_list(avl_tree_t *tree) -{ - void *cookie = NULL; - objlabel_t *node; - - while ((node = avl_destroy_nodes(tree, &cookie)) != NULL) { - free(node->label); - free(node); - } -} - -static void -add_label_node(avl_tree_t *tree, char *label) -{ - avl_index_t where; - objlabel_t *node; - objlabel_t *newnode; - int i; - - if (tree == NULL || label == NULL) - return; - - /* Remove trailing CR */ - i = strlen(label) - 1; - while (i > 0 && label[i] == '\n') - label[i--] = 0x00; - - newnode = calloc(1, sizeof (objlabel_t)); - newnode->label = (char *)strdup(label); - if (newnode->label == NULL) { - free(newnode); - return; - } - /* see if this entry already exists */ - node = avl_find(tree, newnode, &where); - if (node == NULL) { - avl_insert(tree, newnode, where); - } else { - /* It's a dup, don't add it */ - free(newnode->label); - free(newnode); - } -} - -CK_RV -kms_reload_labels(kms_session_t *sp) -{ - CK_RV rv = CKR_OK; - char *cfgbuf = NULL, *ptr, buffer[BUFSIZ]; - size_t buflen, remain; - struct stat statp; - char *ksdir; - char labelfile[BUFSIZ]; - - ksdir = kms_get_keystore_path(); - if (ksdir == NULL) - return (CKR_GENERAL_ERROR); - - (void) snprintf(labelfile, sizeof (labelfile), - "%s/%s", ksdir, KMSTOKEN_LABELLIST_FILENAME); - - bzero(&statp, sizeof (statp)); - if (stat(labelfile, &statp) == -1) { - if (errno == ENOENT) { - FILE *fp; - /* Create it */ - fp = fopen(labelfile, "w"); - if (fp == NULL) - return (CKR_GENERAL_ERROR); - (void) fclose(fp); - } - } - - if (statp.st_size == 0) { - return (CKR_OK); - } - - cfgbuf = calloc(1, statp.st_size); - if (cfgbuf == NULL) - return (CKR_HOST_MEMORY); - - buflen = kms_slurp_file(labelfile, cfgbuf, statp.st_size); - if (buflen != statp.st_size) { - free(cfgbuf); - return (CKR_FUNCTION_FAILED); - } - - if (statp.st_mtime == last_objlist_mtime) { - /* No change */ - goto end; - } - - /* If we got here, we need to refresh the entire list */ - kms_clear_label_list(&sp->objlabel_tree); - - /* - * Read each line and add it as a label node. - */ - remain = buflen; - ptr = cfgbuf; - while (remain > 0) { - ptr = get_non_comment_line(ptr, remain, - buffer, sizeof (buffer)); - if (ptr == NULL) { - goto end; - } - add_label_node(&sp->objlabel_tree, buffer); - remain = buflen - (ptr - cfgbuf); - } -end: - if (cfgbuf) - free(cfgbuf); - - return (rv); -} - -static CK_RV -kms_get_object_label(kms_object_t *obj, char *label, int len) -{ - CK_RV rv = CKR_OK; - CK_ATTRIBUTE stLabel; - - bzero(label, len); - - stLabel.type = CKA_LABEL; - stLabel.pValue = label; - stLabel.ulValueLen = len; - - /* - * The caller MUST provide a CKA_LABEL when deleting. - */ - rv = kms_get_attribute(obj, &stLabel); - - return (rv); -} - -/* - * Retrieve a data unit associated with the label. - */ -static CK_RV -kms_get_data_unit(kms_session_t *session, char *label, - KMSAgent_DataUnit *pDataUnit) -{ - KMS_AGENT_STATUS status; - const utf8cstr pDescription = KMS_DATAUNIT_DESCRIPTION; - uchar_t externalUniqueId[SHA256_DIGEST_LENGTH]; - - /* Find the data unit that holds the key */ - kms_hash_string(label, externalUniqueId); - - status = KMSAgent_RetrieveDataUnitByExternalUniqueID( - &session->kmsProfile, - (const unsigned char *)externalUniqueId, - sizeof (externalUniqueId), - label, - pDescription, - pDataUnit); - - if (status != KMS_AGENT_STATUS_OK) { - return (GetPKCS11StatusFromAgentStatus(status)); - } - - return (CKR_OK); -} - -static CK_RV -kms_decode_description(char *description, kms_object_t *pKey) -{ - CK_RV rv = CKR_OK; - char *ptr; - uint32_t keylen; - u_longlong_t boolattrs; - - /* If it doesn't start with the expected prefix, return */ - if (strncmp(description, KMS_ATTR_DESC_PFX, - strlen(KMS_ATTR_DESC_PFX))) - return (rv); - - ptr = description + strlen(KMS_ATTR_DESC_PFX); - - /* - * Decode as follows: - * CK_OBJECT_CLASS (2 bytes) - * CK_KEY_TYPE (2 bytes) - * CKA_VALUE_LEN (4 bytes) - * CK_CERTIFICATE_TYPE (2 bytes - not used) - * CK_MECHANISM_TYPE (4 bytes) - * boolean attributes (3 bytes) - * extra attributes (1 byte) - * non-boolean attributes - */ - if (sscanf(ptr, - "%02lx%02lx%02x00%04lx%06llx00", - &pKey->class, - &pKey->key_type, - &keylen, - &pKey->mechanism, - &boolattrs) != 5) - /* We didn't get the full set of attributes */ - rv = CKR_ATTRIBUTE_TYPE_INVALID; - pKey->bool_attr_mask = boolattrs; - - return (rv); -} - -/* - * Create a new PKCS#11 object record for the KMSAgent_Key. - */ -static CK_RV -kms_new_key_object( - char *label, - KMSAgent_DataUnit *dataUnit, - KMSAgent_Key *pKey, - kms_object_t **pObj) -{ - CK_RV rv = CKR_OK; - CK_BBOOL bTrue = B_TRUE; - CK_KEY_TYPE keytype = CKK_AES; - CK_OBJECT_CLASS class = CKO_SECRET_KEY; - CK_ULONG keylen; - kms_object_t *newObj; - - CK_ATTRIBUTE template[] = { - {CKA_TOKEN, NULL, sizeof (bTrue)}, - {CKA_LABEL, NULL, 0}, - {CKA_KEY_TYPE, NULL, sizeof (keytype)}, - {CKA_CLASS, NULL, sizeof (class)}, - {CKA_VALUE, NULL, NULL}, - {CKA_VALUE_LEN, NULL, NULL}, - {CKA_PRIVATE, NULL, sizeof (bTrue)}, - }; - - keylen = (CK_ULONG)pKey->m_iKeyLength; - - template[0].pValue = &bTrue; - template[1].pValue = label; - template[1].ulValueLen = strlen(label); - template[2].pValue = &keytype; - template[3].pValue = &class; - template[4].pValue = pKey->m_acKey; - template[4].ulValueLen = pKey->m_iKeyLength; - template[5].pValue = &keylen; - template[5].ulValueLen = sizeof (keylen); - template[6].pValue = &bTrue; - - newObj = kms_new_object(); - if (newObj == NULL) - return (CKR_HOST_MEMORY); - - /* - * Decode the DataUnit description field to find various - * object attributes. - */ - rv = kms_decode_description(dataUnit->m_acDescription, newObj); - if (rv) { - free(newObj); - return (rv); - } - /* - * Set the template keytype and class according to the - * data parsed from the description. - */ - if (newObj->key_type) - keytype = newObj->key_type; - if (newObj->class) - class = newObj->class; - - rv = kms_build_object(template, 7, newObj); - if (rv) { - free(newObj); - return (rv); - } - - newObj->bool_attr_mask |= TOKEN_BOOL_ON; - - *pObj = newObj; - return (rv); -} - -static CK_RV -kms_get_data_unit_keys(kms_session_t *sp, KMSAgent_DataUnit *dataUnit, - KMSAgent_ArrayOfKeys **keylist, int *numkeys) -{ - CK_RV rv = CKR_OK; - KMSAgent_ArrayOfKeys *kmskeys = NULL; - KMS_AGENT_STATUS status; - int keysLeft = 0; - - status = KMSAgent_RetrieveDataUnitKeys( - &sp->kmsProfile, dataUnit, - KMS_MAX_PAGE_SIZE, 0, - (int * const)&keysLeft, - NULL, /* KeyID */ - &kmskeys); - - if (status != KMS_AGENT_STATUS_OK) { - return (GetPKCS11StatusFromAgentStatus(status)); - } - - if (keylist != NULL && kmskeys != NULL) - *keylist = kmskeys; - - if (numkeys != NULL && kmskeys != NULL) - *numkeys = kmskeys->m_iSize; - - if (keylist == NULL && kmskeys != NULL) - KMSAgent_FreeArrayOfKeys(kmskeys); - - return (rv); -} - - -/* - * Retrieve a key from KMS. We can't use "RetrieveKey" because - * we don't know the key id. Instead get all keys associated - * with our data unit (there should be only 1. - */ -CK_RV -KMS_RetrieveKeyObj(kms_session_t *sp, char *label, kms_object_t **pobj) -{ - CK_RV rv = CKR_OK; - KMSAgent_DataUnit dataUnit; - KMSAgent_ArrayOfKeys *kmsKeys = NULL; - KMSAgent_Key *pKey; - - rv = kms_get_data_unit(sp, label, &dataUnit); - if (rv != CKR_OK) - return (rv); - - rv = kms_get_data_unit_keys(sp, &dataUnit, &kmsKeys, NULL); - - if (rv != CKR_OK || kmsKeys == NULL || kmsKeys->m_iSize == 0) - return (CKR_GENERAL_ERROR); - - pKey = &kmsKeys->m_pKeys[0]; - - rv = kms_new_key_object(label, &dataUnit, pKey, pobj); - - KMSAgent_FreeArrayOfKeys(kmsKeys); - return (rv); -} - -CK_RV -KMS_RefreshObjectList(kms_session_t *sp, kms_slot_t *pslot) -{ - kms_object_t *pObj; - char label[BUFSIZ]; - CK_RV rv; - objlabel_t *node; - - rv = kms_reload_labels(sp); - if (rv != CKR_OK) - return (rv); - - /* - * If an object is not in the list, reload it from KMS. - */ - node = avl_first(&sp->objlabel_tree); - while (node != NULL) { - boolean_t found = FALSE; - /* Search object list for matching object */ - pObj = pslot->sl_tobj_list; - while (pObj != NULL && !found) { - (void) pthread_mutex_lock(&pObj->object_mutex); - if ((rv = kms_get_object_label(pObj, label, - sizeof (label))) != CKR_OK) { - (void) pthread_mutex_unlock( - &pObj->object_mutex); - return (rv); - } - (void) pthread_mutex_unlock(&pObj->object_mutex); - found = (strcmp(label, node->label) == 0); - pObj = pObj->next; - } - if (!found) { - /* - * Fetch KMS key and prepend it to the - * token object list for the slot. - */ - rv = KMS_RetrieveKeyObj(sp, node->label, &pObj); - if (rv == CKR_OK) { - if (pslot->sl_tobj_list == NULL) { - pslot->sl_tobj_list = pObj; - pObj->prev = NULL; - pObj->next = NULL; - } else { - pObj->next = pslot->sl_tobj_list; - pObj->prev = NULL; - pslot->sl_tobj_list = pObj; - } - } - } - node = AVL_NEXT(&sp->objlabel_tree, node); - } - return (rv); -} - -CK_RV -KMS_Initialize(void) -{ - char *ksdir; - struct stat fn_stat; - KMS_AGENT_STATUS kmsrv; - - ksdir = kms_get_keystore_path(); - if (ksdir == NULL) - return (CKR_GENERAL_ERROR); - - /* - * If the keystore directory doesn't exist, create it. - */ - if ((stat(ksdir, &fn_stat) != 0) && (errno == ENOENT)) { - if (mkdir(ksdir, S_IRUSR|S_IWUSR|S_IXUSR) < 0) { - if (errno != EEXIST) - return (CKR_GENERAL_ERROR); - } - } - - if ((kmsrv = KMSAgent_InitializeLibrary(ksdir, FALSE)) != - KMS_AGENT_STATUS_OK) { - return (GetPKCS11StatusFromAgentStatus(kmsrv)); - } - - return (CKR_OK); -} - -CK_RV -KMS_Finalize() -{ - last_objlist_mtime = 0; - - return (KMSAgent_FinalizeLibrary() == KMS_AGENT_STATUS_OK) ? - CKR_OK : CKR_FUNCTION_FAILED; -} - -CK_RV -KMS_ChangeLocalPWD(kms_session_t *session, - const char *pOldPassword, - const char *pNewPassword) -{ - KMS_AGENT_STATUS status; - - status = KMSAgent_ChangeLocalPWD( - &session->kmsProfile, - (char * const)pOldPassword, - (char * const)pNewPassword); - - return (GetPKCS11StatusFromAgentStatus(status)); -} - -CK_RV -KMS_GetConfigInfo(kms_cfg_info_t *cfginfo) -{ - CK_RV rv = CKR_OK; - char cfgfile_path[BUFSIZ]; - char *ksdir = kms_get_keystore_path(); - - if (ksdir == NULL) - return (CKR_GENERAL_ERROR); - - (void) snprintf(cfgfile_path, sizeof (cfgfile_path), - "%s/%s", ksdir, KMSTOKEN_CONFIG_FILENAME); - - rv = kms_read_config_data(cfgfile_path, cfginfo); - - return (rv); -} - -CK_RV -KMS_LoadProfile(KMSClientProfile *profile, - kms_cfg_info_t *kmscfg, - const char *pPassword, - size_t iPasswordLength) -{ - KMS_AGENT_STATUS status; - CK_RV rv; - char *sPassword; - char cfgfile_path[BUFSIZ]; - char *ksdir; - - sPassword = calloc(1, iPasswordLength + 1); - if (sPassword == NULL) - return (CKR_FUNCTION_FAILED); - - (void) memcpy(sPassword, pPassword, iPasswordLength); - - ksdir = kms_get_keystore_path(); - if (ksdir == NULL) - return (CKR_GENERAL_ERROR); - - (void) snprintf(cfgfile_path, sizeof (cfgfile_path), - "%s/%s", ksdir, KMSTOKEN_CONFIG_FILENAME); - - if ((rv = kms_read_config_data(cfgfile_path, kmscfg))) { - free(sPassword); - return (rv); - } - - /* First, try to load existing profile */ - status = KMSAgent_LoadProfile( - profile, - kmscfg->name, - kmscfg->agentId, - sPassword, - kmscfg->agentAddr, - kmscfg->transTimeout, - kmscfg->failoverLimit, - kmscfg->discoveryFreq, - kmscfg->securityMode); - - free(sPassword); - return (GetPKCS11StatusFromAgentStatus(status)); -} - -static CK_RV -GetPKCS11StatusFromAgentStatus(KMS_AGENT_STATUS status) -{ - switch (status) { - case KMS_AGENT_STATUS_OK: - return (CKR_OK); - - case KMS_AGENT_STATUS_GENERIC_ERROR: - return (CKR_GENERAL_ERROR); - - case KMS_AGENT_STATUS_NO_MEMORY: - return (CKR_HOST_MEMORY); - - case KMS_AGENT_STATUS_INVALID_PARAMETER: - return (CKR_ARGUMENTS_BAD); - - case KMS_AGENT_STATUS_PROFILE_NOT_LOADED: - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - case KMS_AGENT_STATUS_KMS_UNAVAILABLE: - case KMS_AGENT_STATUS_KMS_NO_READY_KEYS: - return (CKR_DEVICE_MEMORY); - - case KMS_AGENT_STATUS_NO_FIPS_KMAS_AVAILABLE: - return (CKR_GENERAL_ERROR); - - case KMS_AGENT_STATUS_PROFILE_ALREADY_LOADED: - return (CKR_USER_ANOTHER_ALREADY_LOGGED_IN); - - case KMS_AGENT_STATUS_FIPS_KAT_AES_KEYWRAP_ERROR: - case KMS_AGENT_STATUS_FIPS_KAT_AES_ECB_ERROR: - case KMS_AGENT_STATUS_FIPS_KAT_HMAC_SHA1_ERROR: - return (CKR_DEVICE_ERROR); - - case KMS_AGENT_STATUS_ACCESS_DENIED: - case KMS_AGENT_LOCAL_AUTH_FAILURE: - return (CKR_PIN_INCORRECT); - - case KMS_AGENT_STATUS_SERVER_BUSY: - case KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS: - case KMS_AGENT_STATUS_DATA_UNIT_ID_NOT_FOUND_EXTERNAL_ID_EXISTS: - case KMS_AGENT_STATUS_KEY_DOES_NOT_EXIST: - case KMS_AGENT_STATUS_KEY_DESTROYED: - case KMS_AGENT_AES_KEY_UNWRAP_ERROR: - case KMS_AGENT_AES_KEY_WRAP_SETUP_ERROR: - case KMS_AGENT_STATUS_KEY_CALLOUT_FAILURE: - default: - return (CKR_GENERAL_ERROR); - } -} - -void -KMS_UnloadProfile(KMSClientProfile *kmsProfile) -{ - (void) KMSAgent_UnloadProfile(kmsProfile); -} - -/* - * kms_update_label_file - * - * KMS doesn't provide an API to allow one to query for available - * data units (which map 1-1 to keys). To allow for PKCS11 to - * query for a list of available objects, we keep a local list - * and update it when an object is added or deleted. - */ -static CK_RV -kms_update_label_file(kms_session_t *sp) -{ - CK_RV rv = CKR_OK; - objlabel_t *node; - char *ksdir, *tmpfile, labelfile[BUFSIZ]; - FILE *fp; - int fd; - struct stat statp; - - ksdir = kms_get_keystore_path(); - if (ksdir == NULL) - return (CKR_GENERAL_ERROR); - - (void) snprintf(labelfile, sizeof (labelfile), - "%s/%s", ksdir, KMSTOKEN_LABELLIST_FILENAME); - - tmpfile = tempnam(ksdir, "kmspk11"); - if (tmpfile == NULL) - return (CKR_HOST_MEMORY); - - fp = fopen(tmpfile, "w"); - if (fp == NULL) { - free(tmpfile); - return (CKR_GENERAL_ERROR); - } - - /* Lock it even though its a temporary file */ - fd = fileno(fp); - if ((rv = flock_fd(fd, F_WRLCK, &objlist_mutex))) { - (void) fclose(fp); - free(tmpfile); - return (rv); - } - - node = avl_first(&sp->objlabel_tree); - while (node != NULL) { - if (node->label != NULL) - (void) fprintf(fp, "%s\n", node->label); - node = AVL_NEXT(&sp->objlabel_tree, node); - } - - /* Update the last mtime */ - if (fstat(fd, &statp) == 0) { - last_objlist_mtime = statp.st_mtime; - } - - (void) flock_fd(fd, F_UNLCK, &objlist_mutex); - (void) fclose(fp); - - (void) unlink(labelfile); - if (rename(tmpfile, labelfile)) - rv = CKR_GENERAL_ERROR; - - free(tmpfile); - return (rv); -} - -/* - * Destroy a key in the KMS by disassociating an entire data unit. - * The KMSAgent API does not have an interface for destroying an - * individual key. - */ -CK_RV -KMS_DestroyKey(kms_session_t *session, kms_object_t *i_oKey) -{ - CK_RV rv; - KMSAgent_DataUnit oDataUnit; - KMS_AGENT_STATUS status; - char label[BUFSIZ]; - objlabel_t labelnode, *tnode; - avl_index_t where = 0; - - /* - * The caller MUST provide a CKA_LABEL when deleting. - */ - (void) pthread_mutex_lock(&i_oKey->object_mutex); - if ((rv = kms_get_object_label(i_oKey, label, sizeof (label)))) { - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - return (rv); - } - - rv = kms_get_data_unit(session, label, &oDataUnit); - if (rv != CKR_OK) - return (rv); - - status = KMSAgent_DisassociateDataUnitKeys( - &session->kmsProfile, &oDataUnit); - - /* - * Remove the label from the label list and update - * the file that tracks active keys. - */ - bzero(&labelnode, sizeof (labelnode)); - labelnode.label = label; - - if ((tnode = avl_find(&session->objlabel_tree, - &labelnode, &where)) != NULL) - avl_remove(&session->objlabel_tree, tnode); - - /* rewrite the list of labels to disk */ - rv = kms_update_label_file(session); - if (rv) - /* Ignore error here */ - rv = CKR_OK; - - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - - return (GetPKCS11StatusFromAgentStatus(status)); -} - -void -kms_encode_attributes(kms_object_t *pKey, char *attrstr, int len) -{ - char *ptr; - - bzero(attrstr, len); - - (void) strlcpy(attrstr, KMS_ATTR_DESC_PFX, len); - ptr = attrstr + strlen(attrstr); - - /* - * Encode as follows: - * CK_OBJECT_CLASS (2 bytes) - * CK_KEY_TYPE (2 bytes) - * CKA_VALUE_LEN (4 bytes) - * CK_CERTIFICATE_TYPE (2 bytes - not used) - * CK_MECHANISM_TYPE (4 bytes) - * boolean attributes (3 bytes) - * extra attributes (1 byte) - * non-boolean attributes - */ - (void) snprintf(ptr, len - strlen(attrstr), - "%02x%02x%02x00%04x%06x00", - pKey->class, - pKey->key_type, - 32, - pKey->mechanism, - (pKey->bool_attr_mask & 0x00FFFFFF)); -} - -CK_RV -KMS_GenerateKey(kms_session_t *session, kms_object_t *i_oKey) -{ - CK_RV rv; - CK_ATTRIBUTE stLabel; - KMSAgent_DataUnit oDataUnit; - KMSAgent_Key oKey; - KMS_AGENT_STATUS status; - char label[128]; - uchar_t externalUniqueId[SHA256_DIGEST_LENGTH]; - char pDescription[KMS_MAX_DESCRIPTION + 1]; - - (void) pthread_mutex_lock(&i_oKey->object_mutex); - - stLabel.type = CKA_LABEL; - stLabel.pValue = label; - stLabel.ulValueLen = sizeof (label); - - /* - * The caller MUST provide a CKA_LABEL for storing in the KMS. - */ - if ((rv = kms_get_attribute(i_oKey, &stLabel)) != CKR_OK) { - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - return (rv); - } - - label[stLabel.ulValueLen] = '\0'; - - kms_hash_string(label, externalUniqueId); - - /* Encode attributes in Description */ - kms_encode_attributes(i_oKey, pDescription, - sizeof (pDescription)); - - status = KMSAgent_CreateDataUnit( - &session->kmsProfile, - (const unsigned char *)externalUniqueId, - sizeof (externalUniqueId), - label, /* externalTag */ - pDescription, - &oDataUnit); - - /* - * If the DataUnit exists, check to see if it has any keys. - * If it has no keys, then it is OK to continue. - */ - if (status == KMS_AGENT_STATUS_EXTERNAL_UNIQUE_ID_EXISTS) { - int numkeys = 0; - - rv = kms_get_data_unit(session, label, &oDataUnit); - if (rv != CKR_OK) - return (rv); - - rv = kms_get_data_unit_keys(session, - &oDataUnit, NULL, &numkeys); - - if (rv != CKR_OK || numkeys > 0) - /* - * This would be better if there were PKCS#11 - * error codes for duplicate objects or - * something like that. - */ - return (CKR_ARGUMENTS_BAD); - - /* If no keys associated with data unit, continue */ - status = KMS_AGENT_STATUS_OK; - } - - if (status != KMS_AGENT_STATUS_OK) { - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - return (GetPKCS11StatusFromAgentStatus(status)); - } - - status = KMSAgent_CreateKey(&session->kmsProfile, - &oDataUnit, "", &oKey); - - if (status != KMS_AGENT_STATUS_OK) { - /* - * Clean up the old data unit. - */ - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - return (GetPKCS11StatusFromAgentStatus(status)); - } - - /* - * KMS Agent only creates AES-256 keys, so ignore what the user - * requested at this point. - */ - OBJ_SEC_VALUE(i_oKey) = malloc(oKey.m_iKeyLength); - if (OBJ_SEC_VALUE(i_oKey) == NULL) { - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - return (CKR_HOST_MEMORY); - } - (void) memcpy(OBJ_SEC_VALUE(i_oKey), oKey.m_acKey, - oKey.m_iKeyLength); - OBJ_SEC_VALUE_LEN(i_oKey) = oKey.m_iKeyLength; - - /* - * Add the label to the local list of available objects - */ - add_label_node(&session->objlabel_tree, label); - - rv = kms_update_label_file(session); - - (void) pthread_mutex_unlock(&i_oKey->object_mutex); - - return (GetPKCS11StatusFromAgentStatus(status)); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsKeystoreUtil.h --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsKeystoreUtil.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef _KEYSTOREUTIL_H -#define _KEYSTOREUTIL_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "kmsSession.h" -#include "kmsObject.h" - -CK_RV KMS_Initialize(void); -CK_RV KMS_Finalize(); -CK_RV KMS_LoadProfile(KMSClientProfile *, kms_cfg_info_t *, - const char *, size_t); -CK_RV KMS_GenerateKey(kms_session_t *, kms_object_t *); -CK_RV KMS_DestroyKey(kms_session_t *, kms_object_t *); -void KMS_UnloadProfile(KMSClientProfile *); -CK_RV KMS_RefreshObjectList(kms_session_t *, kms_slot_t *); -CK_RV KMS_ChangeLocalPWD(kms_session_t *, const char *, const char *); -CK_RV KMS_GetConfigInfo(kms_cfg_info_t *); - -CK_BBOOL kms_is_initialized(); -CK_BBOOL kms_is_pin_set(); -CK_RV kms_reload_labels(kms_session_t *); -void kms_clear_label_list(avl_tree_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* _KEYSTOREUTIL_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsObject.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsObject.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,664 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include -#include -#include -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsObject.h" -#include "kmsSession.h" - -CK_RV -C_CreateObject(CK_SESSION_HANDLE hSession, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phObject) -{ - - CK_RV rv; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if ((pTemplate == NULL) || (ulCount == 0) || - (phObject == NULL)) { - return (CKR_ARGUMENTS_BAD); - } - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Create a new object. */ - rv = kms_add_object(pTemplate, ulCount, phObject, session_p); - - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - REFRELE(session_p, ses_lock_held); - - return (rv); -} - -CK_RV -C_CopyObject(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phNewObject) -{ - - CK_RV rv; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - kms_object_t *old_object; - kms_object_t *new_object = NULL; - int i; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Check arguments */ - if (((ulCount > 0) && (pTemplate == NULL)) || - (phNewObject == NULL)) { - return (CKR_ARGUMENTS_BAD); - } - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Obtain the object pointer. */ - HANDLE2OBJECT(hObject, old_object, rv); - if (rv != CKR_OK) { - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - REFRELE(session_p, ses_lock_held); - return (rv); - } - - (void) pthread_mutex_lock(&old_object->object_mutex); - - if (old_object->is_lib_obj) { - /* - * Copy the old object to a new object. - * The 3rd argument with TRUE value indicates that - * everything in the object will be duplicated. - */ - rv = kms_copy_object(old_object, &new_object, B_TRUE, - session_p); - (void) pthread_mutex_unlock(&old_object->object_mutex); - if ((rv != CKR_OK) || (new_object == NULL)) { - /* - * Most likely we ran out of space. - * Decrement the session reference count. - * We do not hold the session lock. - */ - OBJ_REFRELE(old_object); - REFRELE(session_p, ses_lock_held); - return (rv); - } - - new_object->is_lib_obj = B_TRUE; - - /* Modify the object attribute if requested */ - for (i = 0; i < ulCount; i++) { - /* Set the requested attribute into the new object. */ - rv = kms_set_attribute(new_object, &pTemplate[i], - B_TRUE); - - if (rv != CKR_OK) { - kms_cleanup_object(new_object); - OBJ_REFRELE(old_object); - REFRELE(session_p, ses_lock_held); - return (rv); - } - } - - /* Insert the new object into this session's object list. */ - kms_add_object_to_session(new_object, session_p); - - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - OBJ_REFRELE(old_object); - REFRELE(session_p, ses_lock_held); - - /* set handle of the new object */ - *phNewObject = (CK_ULONG)new_object; - - } - - return (rv); - -failed_cleanup: - if (new_object != NULL) { - (void) kms_free_object(new_object); - } - - OBJ_REFRELE(old_object); - REFRELE(session_p, ses_lock_held); - return (rv); -} - -CK_RV -C_DestroyObject(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject) -{ - CK_RV rv; - kms_object_t *object_p; - kms_session_t *session_p = (kms_session_t *)(hSession); - kms_slot_t *pslot; - boolean_t ses_lock_held = B_FALSE; - CK_SESSION_HANDLE creating_session; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * The reason that we don't call handle2session is because - * the argument hSession may not be the creating_session of - * the object to be destroyed, and we want to avoid the lock - * contention. The handle2session will be called later for - * the creating_session. - */ - if ((session_p == NULL) || - (session_p->magic_marker != KMSTOKEN_SESSION_MAGIC)) { - return (CKR_SESSION_HANDLE_INVALID); - } - /* Obtain the object pointer without incrementing reference count. */ - HANDLE2OBJECT_DESTROY(hObject, object_p, rv); - if (rv != CKR_OK) { - return (rv); - } - - /* Only session objects can be destroyed at a read-only session. */ - if ((session_p->ses_RO) && - (object_p->bool_attr_mask & TOKEN_BOOL_ON)) { - return (CKR_SESSION_READ_ONLY); - } - - - /* - * If the object is a session object, obtain the session handle - * which object belongs to. For a token object, we will use the - * session handle from the caller, because the session used to - * create the token object may no longer exist. - */ - if (!(object_p->bool_attr_mask & TOKEN_BOOL_ON)) - creating_session = object_p->session_handle; - else - creating_session = hSession; - - rv = handle2session(creating_session, &session_p); - if (rv != CKR_OK) { - return (rv); - } - - /* - * Set OBJECT_IS_DELETING flag so any access to this - * object will be rejected. - */ - (void) pthread_mutex_lock(&object_p->object_mutex); - if (object_p->obj_delete_sync & OBJECT_IS_DELETING) { - (void) pthread_mutex_unlock(&object_p->object_mutex); - REFRELE(session_p, ses_lock_held); - return (CKR_OBJECT_HANDLE_INVALID); - } - object_p->obj_delete_sync |= OBJECT_IS_DELETING; - (void) pthread_mutex_unlock(&object_p->object_mutex); - - if (object_p->bool_attr_mask & TOKEN_BOOL_ON) { - /* - * The first FALSE boolean argument indicates that the caller - * does not hold the slot lock. The second FALSE boolean - * argument indicates that the caller wants to clean up the - * object in the HW provider also. - */ - pslot = get_slotinfo(); - rv = kms_delete_token_object(pslot, session_p, object_p, - B_FALSE, B_FALSE); - } else { - /* - * The first FALSE boolean argument indicates that the caller - * does not hold the session lock. The second FALSE boolean - * argument indicates that the caller wants to clean the object - * in the HW provider also. - */ - rv = kms_delete_object(session_p, object_p, B_FALSE, - B_FALSE); - } - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - REFRELE(session_p, ses_lock_held); - return (rv); -} - -CK_RV -C_GetAttributeValue(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) -{ - - CK_RV rv = CKR_OK, rv1 = CKR_OK; - kms_object_t *object_p; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - int i; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if ((pTemplate == NULL) || (ulCount == 0)) - return (CKR_ARGUMENTS_BAD); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Obtain the object pointer. */ - HANDLE2OBJECT(hObject, object_p, rv); - if (rv != CKR_OK) { - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - REFRELE(session_p, ses_lock_held); - return (rv); - } - - /* Acquire the lock on the object. */ - (void) pthread_mutex_lock(&object_p->object_mutex); - - /* - * The object was created in the library. The library - * contains the value information of each attribute. - */ - for (i = 0; i < ulCount; i++) { - /* - * Get the value of each attribute in the template. - * (We must process EVERY attribute in the template.) - */ - rv = kms_get_attribute(object_p, &pTemplate[i]); - if (rv != CKR_OK) - rv1 = rv; - } - (void) pthread_mutex_unlock(&object_p->object_mutex); - -clean_exit: - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - OBJ_REFRELE(object_p); - REFRELE(session_p, ses_lock_held); - rv = rv1; - return (rv); -} - -CK_RV -C_SetAttributeValue(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount) -{ - CK_RV rv = CKR_OK; - kms_object_t *object_p; - kms_object_t *new_object = NULL; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - int i; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if ((pTemplate == NULL) || (ulCount == 0)) - return (CKR_ARGUMENTS_BAD); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Obtain the object pointer. */ - HANDLE2OBJECT(hObject, object_p, rv); - if (rv != CKR_OK) { - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - REFRELE(session_p, ses_lock_held); - return (rv); - } - - /* lock the object */ - (void) pthread_mutex_lock(&object_p->object_mutex); - - /* - * If the object was created in the HW provider, changing its - * attributes' values need to be done in the provider too. - */ - if (!object_p->is_lib_obj) { - - /* Cannot modify a token object with a READ-ONLY session */ - if (session_p->ses_RO && - (object_p->bool_attr_mask & TOKEN_BOOL_ON)) { - (void) pthread_mutex_unlock(&object_p->object_mutex); - rv = CKR_SESSION_READ_ONLY; - goto clean_exit; - } - } - - /* - * if we come here, the object must have been created in the - * library. The work will be done completely in the library. - * - * Copy the old object to a new object. We work on the copied - * version because in case of error we still keep the old one - * intact. - */ - rv = kms_copy_object(object_p, &new_object, B_FALSE, NULL); - (void) pthread_mutex_unlock(&object_p->object_mutex); - if ((rv != CKR_OK) || (new_object == NULL)) { - /* - * Most likely we ran out of space. - * Decrement the session reference count. - * We do not hold the session lock. - */ - goto clean_exit; - } - - for (i = 0; i < ulCount; i++) { - /* Set the requested attribute into the new object. */ - rv = kms_set_attribute(new_object, &pTemplate[i], B_FALSE); - - if (rv != CKR_OK) { - kms_cleanup_object(new_object); - goto clean_exit; - } - } - - /* - * We've successfully set all the requested attributes. - * Merge the new object with the old object, then destory - * the new one. The reason to do the merging is because we - * have to keep the original object handle (address of object). - */ - (void) pthread_mutex_lock(&object_p->object_mutex); - kms_merge_object(object_p, new_object); - (void) pthread_mutex_unlock(&object_p->object_mutex); - -clean_exit: - if (new_object != NULL) - (void) kms_free_object(new_object); - - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - OBJ_REFRELE(object_p); - REFRELE(session_p, ses_lock_held); - - return (rv); -} - -CK_RV -C_GetObjectSize(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, - CK_ULONG_PTR pulSize) -{ - - CK_RV rv = CKR_OK; - kms_object_t *object_p; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Check if pulSize is valid */ - if (pulSize == NULL) { - return (CKR_ARGUMENTS_BAD); - } - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Obtain the object pointer. */ - HANDLE2OBJECT(hObject, object_p, rv); - if (rv != CKR_OK) { - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - REFRELE(session_p, ses_lock_held); - return (rv); - } - - /* Acquire the lock on the object. */ - (void) pthread_mutex_lock(&object_p->object_mutex); - - rv = kms_get_object_size(object_p, pulSize); - - (void) pthread_mutex_unlock(&object_p->object_mutex); - - /* - * Decrement the session reference count. - * We do not hold the session lock. - */ - OBJ_REFRELE(object_p); - REFRELE(session_p, ses_lock_held); - return (rv); -} - -CK_RV -C_FindObjectsInit(CK_SESSION_HANDLE sh, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount) -{ - CK_RV rv; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Check the arguments */ - if ((ulCount > 0) && (pTemplate == NULL)) { - return (CKR_ARGUMENTS_BAD); - } - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(sh, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Acquire the session lock */ - (void) pthread_mutex_lock(&session_p->session_mutex); - ses_lock_held = B_TRUE; - - /* Check to see if find operation is already active */ - if (session_p->find_objects.flags & CRYPTO_OPERATION_ACTIVE) { - /* decrement the session count, and unlock the mutex */ - REFRELE(session_p, ses_lock_held); - return (CKR_OPERATION_ACTIVE); - } else { - /* - * This active flag will remain ON until application calls - * C_FindObjectsFinal. - */ - session_p->find_objects.flags = CRYPTO_OPERATION_ACTIVE; - } - (void) pthread_mutex_unlock(&session_p->session_mutex); - - /* - * If the KMS provider supports object creation, we call the - * CRYPTO_OBJECT_FIND_INIT to initialize object finding. - * Otherwise, all the objects are created in the library and we - * do the find objects solely in the library. - */ - rv = kms_find_objects_init(session_p, pTemplate, ulCount); - if (rv != CKR_OK) { - (void) pthread_mutex_lock(&session_p->session_mutex); - session_p->find_objects.flags = 0; - (void) pthread_mutex_unlock(&session_p->session_mutex); - } - /* decrement the session count, and unlock the mutex */ - REFRELE(session_p, ses_lock_held); - return (rv); -} - -CK_RV -C_FindObjects(CK_SESSION_HANDLE sh, CK_OBJECT_HANDLE_PTR phObject, - CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount) -{ - CK_RV rv = CKR_OK; - kms_slot_t *pslot = NULL; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* check for invalid arguments */ - if (((phObject == NULL) && (ulMaxObjectCount != 0)) || - (pulObjectCount == NULL)) { - return (CKR_ARGUMENTS_BAD); - } - - if (ulMaxObjectCount == 0) { - /* don't need to do anything, just return */ - *pulObjectCount = 0; - return (CKR_OK); - } - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(sh, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Acquire the slot lock */ - pslot = get_slotinfo(); - (void) pthread_mutex_lock(&pslot->sl_mutex); - - /* Acquire the session lock */ - (void) pthread_mutex_lock(&session_p->session_mutex); - ses_lock_held = B_TRUE; - - /* Check to see if find operation is active */ - if (!(session_p->find_objects.flags & CRYPTO_OPERATION_ACTIVE)) { - rv = CKR_OPERATION_NOT_INITIALIZED; - goto clean_exit; - } - - /* - * Similar to C_FindObjectInit(), if the KMS provider supports object - * creation, we need to find objects. - * Otherwise, all the objects are created in the library and we do - * the find objects solely in the library. - */ - - rv = kms_find_objects(session_p, phObject, - ulMaxObjectCount, pulObjectCount); - -clean_exit: - /* decrement the session count, and release the session lock */ - REFRELE(session_p, ses_lock_held); - - /* release the slot lock */ - if (pslot) - (void) pthread_mutex_unlock(&pslot->sl_mutex); - - return (rv); -} - -CK_RV -C_FindObjectsFinal(CK_SESSION_HANDLE sh) -{ - kms_session_t *session_p; - CK_RV rv; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(sh, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Acquire the session lock */ - (void) pthread_mutex_lock(&session_p->session_mutex); - ses_lock_held = B_TRUE; - - /* Check to see if find operation is active */ - if (!(session_p->find_objects.flags & CRYPTO_OPERATION_ACTIVE)) { - REFRELE(session_p, ses_lock_held); - return (CKR_OPERATION_NOT_INITIALIZED); - } - - /* - * Similar to C_FindObjectInit(), if the KMS provider supports object - * creation, we need to finalize the search on the KMS side. - */ - kms_find_objects_final(session_p); - - /* decrement the session count, and release the lock */ - REFRELE(session_p, ses_lock_held); - return (rv); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsObject.h --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsObject.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef _KMSOBJECT_H -#define _KMSOBJECT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "kmsSession.h" -#include "kmsSlot.h" - -#define KMSTOKEN_OBJECT_MAGIC 0xECF0B004 - -#define KMS_CREATE_OBJ 1 -#define KMS_GEN_KEY 2 - -/* - * Secret key Struct - */ -typedef struct secret_key_obj { - CK_BYTE *sk_value; - CK_ULONG sk_value_len; - void *key_sched; - size_t keysched_len; -} secret_key_obj_t; - -/* - * This structure is used to hold the attributes in the - * Extra Attribute List. - */ -typedef struct attribute_info { - CK_ATTRIBUTE attr; - struct attribute_info *next; -} attribute_info_t; - -typedef attribute_info_t *CK_ATTRIBUTE_INFO_PTR; - -/* - * This is the main structure of the Objects. - */ -typedef struct object { - boolean_t is_lib_obj; /* default is TRUE */ - - /* Generic common fields. Always present */ - CK_OBJECT_CLASS class; - CK_KEY_TYPE key_type; - CK_ULONG magic_marker; - uint64_t bool_attr_mask; - CK_MECHANISM_TYPE mechanism; - - /* Fields for access and arbitration */ - pthread_mutex_t object_mutex; - struct object *next; - struct object *prev; - - /* Extra non-boolean attribute list */ - CK_ATTRIBUTE_INFO_PTR extra_attrlistp; - CK_ULONG extra_attrcount; - - /* For each object, only one object class is presented */ - union { - secret_key_obj_t *secret_key; - } object_class_u; - - /* Session handle that the object belongs to */ - CK_SESSION_HANDLE session_handle; - uint32_t obj_refcnt; /* object reference count */ - pthread_cond_t obj_free_cond; /* cond variable for signal and wait */ - uint32_t obj_delete_sync; /* object delete sync flags */ -} kms_object_t; - -typedef struct find_context { - kms_object_t **objs_found; - CK_ULONG num_results; - CK_ULONG next_result_index; /* next result object to return */ -} find_context_t; - -/* - * The following structure is used to link the to-be-freed session - * objects into a linked list. The objects on this linked list have - * not yet been freed via free() after C_DestroyObject() call; instead - * they are added to this list. The actual free will take place when - * the number of objects queued reaches MAX_OBJ_TO_BE_FREED, at which - * time the first object in the list will be freed. - */ -#define MAX_OBJ_TO_BE_FREED 300 - -typedef struct obj_to_be_freed_list { - kms_object_t *first; /* points to first obj in the list */ - kms_object_t *last; /* points to last obj in the list */ - uint32_t count; /* current total objs in the list */ - pthread_mutex_t obj_to_be_free_mutex; -} object_to_be_freed_list_t; - -extern object_to_be_freed_list_t obj_delay_freed; - -/* - * The following definitions are the shortcuts - */ - -/* - * Secret Key Object Attributes - */ -#define OBJ_SEC(o) \ - ((o)->object_class_u.secret_key) -#define OBJ_SEC_VALUE(o) \ - ((o)->object_class_u.secret_key->sk_value) -#define OBJ_SEC_VALUE_LEN(o) \ - ((o)->object_class_u.secret_key->sk_value_len) -#define OBJ_KEY_SCHED(o) \ - ((o)->object_class_u.secret_key->key_sched) -#define OBJ_KEY_SCHED_LEN(o) \ - ((o)->object_class_u.secret_key->keysched_len) - -/* - * key related attributes with CK_BBOOL data type - */ -#define DERIVE_BOOL_ON 0x00000001 -#define LOCAL_BOOL_ON 0x00000002 -#define SENSITIVE_BOOL_ON 0x00000004 -#define SECONDARY_AUTH_BOOL_ON 0x00000008 -#define ENCRYPT_BOOL_ON 0x00000010 -#define DECRYPT_BOOL_ON 0x00000020 -#define SIGN_BOOL_ON 0x00000040 -#define SIGN_RECOVER_BOOL_ON 0x00000080 -#define VERIFY_BOOL_ON 0x00000100 -#define VERIFY_RECOVER_BOOL_ON 0x00000200 -#define WRAP_BOOL_ON 0x00000400 -#define UNWRAP_BOOL_ON 0x00000800 -#define TRUSTED_BOOL_ON 0x00001000 -#define EXTRACTABLE_BOOL_ON 0x00002000 -#define ALWAYS_SENSITIVE_BOOL_ON 0x00004000 -#define NEVER_EXTRACTABLE_BOOL_ON 0x00008000 -#define PRIVATE_BOOL_ON 0x00010000 -#define TOKEN_BOOL_ON 0x00020000 -#define MODIFIABLE_BOOL_ON 0x00040000 - -#define SECRET_KEY_DEFAULT (ENCRYPT_BOOL_ON|\ - DECRYPT_BOOL_ON|\ - SIGN_BOOL_ON|\ - VERIFY_BOOL_ON|\ - WRAP_BOOL_ON|\ - UNWRAP_BOOL_ON|\ - EXTRACTABLE_BOOL_ON|\ - MODIFIABLE_BOOL_ON) - -/* - * Flag definitions for obj_delete_sync - */ -#define OBJECT_IS_DELETING 1 /* Object is in a deleting state */ -#define OBJECT_REFCNT_WAITING 2 /* Waiting for object reference */ - /* count to become zero */ - -/* - * This macro is used to type cast an object handle to a pointer to - * the object struct. Also, it checks to see if the object struct - * is tagged with an object magic number. This is to detect when an - * application passes a bogus object pointer. - * Also, it checks to see if the object is in the deleting state that - * another thread is performing. If not, increment the object reference - * count by one. This is to prevent this object from being deleted by - * other thread. - */ -#define HANDLE2OBJECT_COMMON(hObject, object_p, rv, REFCNT_CODE) { \ - object_p = (kms_object_t *)(hObject); \ - if ((object_p == NULL) || \ - (object_p->magic_marker != KMSTOKEN_OBJECT_MAGIC)) {\ - rv = CKR_OBJECT_HANDLE_INVALID; \ - } else { \ - (void) pthread_mutex_lock(&object_p->object_mutex); \ - if (!(object_p->obj_delete_sync & OBJECT_IS_DELETING)) { \ - REFCNT_CODE; \ - rv = CKR_OK; \ - } else { \ - rv = CKR_OBJECT_HANDLE_INVALID; \ - } \ - (void) pthread_mutex_unlock(&object_p->object_mutex); \ - } \ -} - -#define HANDLE2OBJECT(hObject, object_p, rv) \ - HANDLE2OBJECT_COMMON(hObject, object_p, rv, object_p->obj_refcnt++) - -#define HANDLE2OBJECT_DESTROY(hObject, object_p, rv) \ - HANDLE2OBJECT_COMMON(hObject, object_p, rv, /* no refcnt increment */) - - -#define OBJ_REFRELE(object_p) { \ - (void) pthread_mutex_lock(&object_p->object_mutex); \ - if ((--object_p->obj_refcnt) == 0 && \ - (object_p->obj_delete_sync & OBJECT_REFCNT_WAITING)) { \ - (void) pthread_cond_signal(&object_p->obj_free_cond); \ - } \ - (void) pthread_mutex_unlock(&object_p->object_mutex); \ -} - - -/* - * Function Prototypes. - */ -void kms_cleanup_object(kms_object_t *objp); - -CK_RV kms_add_object(CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, - CK_ULONG *objecthandle_p, kms_session_t *sp); - -CK_RV kms_delete_object(kms_session_t *, kms_object_t *, - boolean_t, boolean_t); - -void kms_cleanup_extra_attr(kms_object_t *object_p); - -CK_RV kms_copy_extra_attr(CK_ATTRIBUTE_INFO_PTR old_attrp, - kms_object_t *object_p); - -void kms_cleanup_object_bigint_attrs(kms_object_t *object_p); - -CK_RV kms_build_object(CK_ATTRIBUTE_PTR, CK_ULONG, kms_object_t *); - -CK_RV kms_copy_object(kms_object_t *old_object, - kms_object_t **new_object, boolean_t copy_everything, - kms_session_t *sp); - -void kms_merge_object(kms_object_t *old_object, - kms_object_t *new_object); - -CK_RV kms_get_attribute(kms_object_t *object_p, - CK_ATTRIBUTE_PTR template); - -CK_RV kms_set_attribute(kms_object_t *, CK_ATTRIBUTE_PTR, boolean_t); - -void kms_add_object_to_session(kms_object_t *objp, kms_session_t *sp); - -CK_RV kms_copy_secret_key_attr(secret_key_obj_t *old_secret_key_obj_p, - secret_key_obj_t **new_secret_key_obj_p); - -CK_RV kms_validate_attr(CK_ATTRIBUTE_PTR template, CK_ULONG ulAttrNum, - CK_OBJECT_CLASS *class); - -CK_RV kms_find_objects_init(kms_session_t *sp, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); - -void kms_find_objects_final(kms_session_t *sp); - -CK_RV kms_find_objects(kms_session_t *sp, - CK_OBJECT_HANDLE *obj_found, CK_ULONG max_obj_requested, - CK_ULONG *found_obj_count); - -void kms_process_find_attr(CK_OBJECT_CLASS *pclasses, - CK_ULONG *num_result_pclasses, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount); - -boolean_t kms_find_match_attrs(kms_object_t *obj, - CK_OBJECT_CLASS *pclasses, CK_ULONG num_pclasses, - CK_ATTRIBUTE *tmpl_attr, CK_ULONG num_attr); - -CK_ATTRIBUTE_PTR get_extra_attr(CK_ATTRIBUTE_TYPE type, kms_object_t *obj); - -CK_RV get_string_from_template(CK_ATTRIBUTE_PTR dest, CK_ATTRIBUTE_PTR src); - -void string_attr_cleanup(CK_ATTRIBUTE_PTR template); - -void kms_add_token_object_to_slot(kms_object_t *objp, - kms_slot_t *pslot); - -void kms_remove_token_object_from_slot(kms_slot_t *pslot, - kms_object_t *objp); - -CK_RV kms_delete_token_object(kms_slot_t *pslot, kms_session_t *sp, - kms_object_t *obj, boolean_t lock_held, boolean_t wrapper_only); - -void kms_cleanup_pri_objects_in_slot(kms_slot_t *pslot, - kms_session_t *sp); - -CK_RV kms_get_object_size(kms_object_t *objp, CK_ULONG_PTR pulSize); - -void kms_object_delay_free(kms_object_t *); - -kms_object_t *kms_new_object(); -void kms_free_object(kms_object_t *); - -#ifdef __cplusplus -} -#endif - -#endif /* _KMSOBJECT_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsObjectUtil.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsObjectUtil.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,930 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include - -#include "kmsGlobal.h" -#include "kmsObject.h" -#include "kmsSession.h" -#include "kmsSlot.h" -#include "kmsKeystoreUtil.h" - -kms_object_t * -kms_new_object() -{ - kms_object_t *obj; - - obj = calloc(1, sizeof (kms_object_t)); - if (obj == NULL) - return (NULL); - - (void) pthread_cond_init(&obj->obj_free_cond, NULL); - (void) pthread_mutex_init(&obj->object_mutex, NULL); - obj->magic_marker = KMSTOKEN_OBJECT_MAGIC; - - return (obj); -} - -/* - * Add an object to the session's object list. - * - * This function will acquire the lock on the session, and release - * that lock after adding the object to the session's object list. - */ -void -kms_add_object_to_session(kms_object_t *objp, kms_session_t *sp) -{ - /* Acquire the session lock. */ - (void) pthread_mutex_lock(&sp->session_mutex); - - /* Insert the new object in front of session's object list. */ - if (sp->object_list == NULL) { - sp->object_list = objp; - objp->next = NULL; - objp->prev = NULL; - } else { - sp->object_list->prev = objp; - objp->next = sp->object_list; - objp->prev = NULL; - sp->object_list = objp; - } - - /* Release the session lock. */ - (void) pthread_mutex_unlock(&sp->session_mutex); -} - -/* - * Clean up and release the storage allocated to the object. - * - * The function is called either with the object lock being held - * (by caller kms_delete_object()), or there is no object lock - * yet (by kms_build_XXX_object() during creating an object). - */ -void -kms_cleanup_object(kms_object_t *objp) -{ - /* - * Free the storage allocated to a secret key object. - */ - if (objp->class == CKO_SECRET_KEY) { - if (OBJ_SEC(objp) != NULL && OBJ_SEC_VALUE(objp) != NULL) { - bzero(OBJ_SEC_VALUE(objp), OBJ_SEC_VALUE_LEN(objp)); - free(OBJ_SEC_VALUE(objp)); - OBJ_SEC_VALUE(objp) = NULL; - OBJ_SEC_VALUE_LEN(objp) = 0; - } - if (OBJ_SEC(objp) != NULL) - free(OBJ_SEC(objp)); - - OBJ_SEC(objp) = NULL; - } - - /* - * Free the storage allocated to the extra attribute list. - */ - kms_cleanup_extra_attr(objp); -} - -void -kms_free_object(kms_object_t *obj) -{ - (void) pthread_cond_destroy(&obj->obj_free_cond); - (void) pthread_mutex_destroy(&obj->object_mutex); - - kms_cleanup_object(obj); - - free(obj); -} - -/* - * Create a new object. Copy the attributes that can be modified - * (in the boolean attribute mask field and extra attribute list) - * from the old object to the new object. - * - * The caller of this function holds the lock on the old object. - */ -CK_RV -kms_copy_object(kms_object_t *old_object, kms_object_t **new_object, - boolean_t copy_everything, kms_session_t *sp) -{ - CK_RV rv = CKR_OK; - kms_object_t *new_objp = NULL; - CK_ATTRIBUTE_INFO_PTR attrp; - - /* Allocate new object. */ - new_objp = kms_new_object(); - if (new_objp == NULL) - return (CKR_HOST_MEMORY); - - new_objp->class = old_object->class; - new_objp->bool_attr_mask = old_object->bool_attr_mask; - - attrp = old_object->extra_attrlistp; - while (attrp) { - /* - * Copy the attribute_info struct from the old - * object to a new attribute_info struct, and add - * that new struct to the extra attribute list - * of the new object. - */ - rv = kms_copy_extra_attr(attrp, new_objp); - if (rv != CKR_OK) { - kms_free_object(new_objp); - return (rv); - } - attrp = attrp->next; - } - - *new_object = new_objp; - - if (!copy_everything) { - /* done with copying all information that can be modified */ - return (CKR_OK); - } - - /* - * Copy the rest of the object. - * Certain fields that are not appropriate for coping will be - * initialized. - */ - new_objp->key_type = old_object->key_type; - new_objp->magic_marker = old_object->magic_marker; - new_objp->mechanism = old_object->mechanism; - new_objp->session_handle = (CK_SESSION_HANDLE)sp; - - /* copy key related information */ - switch (new_objp->class) { - case CKO_SECRET_KEY: - rv = kms_copy_secret_key_attr(OBJ_SEC(old_object), - &(OBJ_SEC(new_objp))); - break; - default: - /* should never be this case */ - break; - } - if (rv != CKR_OK) { - kms_free_object(new_objp); - *new_object = NULL; - } - return (rv); -} - -/* - * Copy the attributes (in the boolean attribute mask field and - * extra attribute list) from the new object back to the original - * object. Also, clean up and release all the storage in the extra - * attribute list of the original object. - * - * The caller of this function holds the lock on the old object. - */ -void -kms_merge_object(kms_object_t *old_object, kms_object_t *new_object) -{ - old_object->bool_attr_mask = new_object->bool_attr_mask; - kms_cleanup_extra_attr(old_object); - old_object->extra_attrlistp = new_object->extra_attrlistp; -} - -/* - * Create a new object struct. If it is a session object, add the object to - * the session's object list. If it is a token object, add it to the slot's - * token object list. The caller does not hold the slot lock. - */ -CK_RV -kms_add_object(CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, - CK_ULONG *objecthandle_p, kms_session_t *sp) -{ - CK_RV rv = CKR_OK; - kms_object_t *new_objp = NULL; - kms_slot_t *pslot; - CK_ATTRIBUTE pritmpl; - CK_BBOOL is_pri_obj, is_token_obj; - - new_objp = kms_new_object(); - if (new_objp == NULL) - return (CKR_HOST_MEMORY); - - rv = kms_build_object(pTemplate, ulCount, new_objp); - if (rv != CKR_OK) - goto fail_cleanup; - - /* Cannot create a token object with a READ-ONLY session */ - pritmpl.type = CKA_TOKEN; - pritmpl.pValue = &is_token_obj; - pritmpl.ulValueLen = sizeof (is_token_obj); - rv = kms_get_attribute(new_objp, &pritmpl); - if (rv != CKR_OK) - goto fail_cleanup; - - if (is_token_obj && sp->ses_RO) { - rv = CKR_SESSION_READ_ONLY; - goto fail_cleanup; - } - - /* - * If the KMS supports object creation, create the object - * in the KMS. Otherwise, create the object in the library. - */ - - /* Get the CKA_PRIVATE value of this object. */ - pritmpl.type = CKA_PRIVATE; - pritmpl.pValue = &is_pri_obj; - pritmpl.ulValueLen = sizeof (is_pri_obj); - - rv = kms_get_attribute(new_objp, &pritmpl); - if (rv != CKR_OK) { - goto fail_cleanup; - } - - /* Set the PRIVATE_BOOL_ON and TOKEN_BOOL_ON attributes */ - if (is_pri_obj) - new_objp->bool_attr_mask |= PRIVATE_BOOL_ON; - else - new_objp->bool_attr_mask &= ~PRIVATE_BOOL_ON; - - if (is_token_obj) - new_objp->bool_attr_mask |= TOKEN_BOOL_ON; - else - new_objp->bool_attr_mask &= ~TOKEN_BOOL_ON; - - new_objp->session_handle = (CK_SESSION_HANDLE)sp; - - if (is_token_obj) { - /* Add the new object to the slot's token object list. */ - pslot = get_slotinfo(); - kms_add_token_object_to_slot(new_objp, pslot); - } else { - /* Add the new object to the session's object list. */ - kms_add_object_to_session(new_objp, sp); - } - - /* Type casting the address of an object struct to an object handle. */ - if (rv == CKR_OK) - *objecthandle_p = (CK_ULONG)new_objp; - -fail_cleanup: - if (rv != CKR_OK) { - kms_free_object(new_objp); - } - return (rv); -} - -/* - * Remove an object from the session's object list. - * - * The caller of this function holds the session lock. - */ -CK_RV -kms_remove_object_from_session(kms_object_t *objp, kms_session_t *sp) -{ - kms_object_t *tmp_objp; - boolean_t found = B_FALSE; - - /* - * Remove the object from the session's object list. - */ - if ((sp == NULL) || - (sp->magic_marker != KMSTOKEN_SESSION_MAGIC)) { - return (CKR_SESSION_HANDLE_INVALID); - } - - if ((sp->object_list == NULL) || (objp == NULL) || - (objp->magic_marker != KMSTOKEN_OBJECT_MAGIC)) { - return (CKR_OBJECT_HANDLE_INVALID); - } - - tmp_objp = sp->object_list; - while (tmp_objp) { - if (tmp_objp == objp) { - found = B_TRUE; - break; - } - tmp_objp = tmp_objp->next; - } - if (!found) - return (CKR_OBJECT_HANDLE_INVALID); - - if (sp->object_list == objp) { - /* Object is the first one in the list. */ - if (objp->next) { - sp->object_list = objp->next; - objp->next->prev = NULL; - } else { - /* Object is the only one in the list. */ - sp->object_list = NULL; - } - } else { - /* Object is not the first one in the list. */ - if (objp->next) { - /* Object is in the middle of the list. */ - objp->prev->next = objp->next; - objp->next->prev = objp->prev; - } else { - /* Object is the last one in the list. */ - objp->prev->next = NULL; - } - } - return (CKR_OK); -} - -/* - * This function adds the to-be-freed session object to a linked list. - * When the number of objects queued in the linked list reaches the - * maximum threshold MAX_OBJ_TO_BE_FREED, it will free the first - * object (FIFO) in the list. - */ -void -kms_object_delay_free(kms_object_t *objp) -{ - kms_object_t *tmp; - - (void) pthread_mutex_lock(&obj_delay_freed.obj_to_be_free_mutex); - - /* Add the newly deleted object at the end of the list */ - objp->next = NULL; - if (obj_delay_freed.first == NULL) { - obj_delay_freed.last = objp; - obj_delay_freed.first = objp; - } else { - obj_delay_freed.last->next = objp; - obj_delay_freed.last = objp; - } - - if (++obj_delay_freed.count >= MAX_OBJ_TO_BE_FREED) { - /* - * Free the first object in the list only if - * the total count reaches maximum threshold. - */ - obj_delay_freed.count--; - tmp = obj_delay_freed.first->next; - kms_free_object(obj_delay_freed.first); - obj_delay_freed.first = tmp; - } - (void) pthread_mutex_unlock(&obj_delay_freed.obj_to_be_free_mutex); -} - -static void -kms_delete_object_cleanup(kms_object_t *objp, boolean_t force) -{ - /* Acquire the lock on the object. */ - (void) pthread_mutex_lock(&objp->object_mutex); - - /* - * Make sure another thread hasn't freed the object. - */ - if (objp->magic_marker != KMSTOKEN_OBJECT_MAGIC) { - (void) pthread_mutex_unlock(&objp->object_mutex); - return; - } - - /* - * The deletion of an object must be blocked when the object - * reference count is not zero. This means if any object related - * operation starts prior to the delete object operation gets in, - * the object deleting thread must wait for the non-deleting - * operation to be completed before it can proceed the delete - * operation. - * - * Unless we are being forced to shut everything down, this only - * happens if the library's _fini() is running not if someone - * explicitly called C_Finalize(). - */ - if (force) { - objp->obj_refcnt = 0; - } - - while (objp->obj_refcnt != 0) { - /* - * We set the OBJECT_REFCNT_WAITING flag before we put - * this deleting thread in a wait state, so other non-deleting - * operation thread will signal to wake it up only when - * the object reference count becomes zero and this flag - * is set. - */ - objp->obj_delete_sync |= OBJECT_REFCNT_WAITING; - (void) pthread_cond_wait(&objp->obj_free_cond, - &objp->object_mutex); - } - - objp->obj_delete_sync &= ~OBJECT_REFCNT_WAITING; - - /* Mark object as no longer valid. */ - objp->magic_marker = 0; - kms_cleanup_object(objp); - - objp->obj_delete_sync &= ~OBJECT_IS_DELETING; - (void) pthread_mutex_unlock(&objp->object_mutex); - - if (objp->bool_attr_mask & TOKEN_BOOL_ON) - free(objp); - else - kms_object_delay_free(objp); -} - -/* - * Delete a session object: - * - Remove the object from the session's object list. - * - Release the storage allocated to the object. - * - * The boolean argument ses_lock_held is used to indicate that whether - * the caller holds the session lock or not. - * - When called by kms_delete_all_objects_in_session() or - * kms_delete_pri_objects_in_slot() -- ses_lock_held = TRUE. - * - * The boolean argument wrapper_only is used to indicate that whether - * the caller only wants to clean up the object wrapper from the library and - * needs not to make an call to KMS. - * - This argument only applies to the object created in the provider level. - * - When called by kms_cleanup_pri_objects_in_slot(), wrapper_only is TRUE. - * - When called by C_DestroyObject(), wrapper_only is FALSE. - * - When called by kms_delete_all_objects_in_session(), the value of - * wrapper_only depends on its caller. - */ -CK_RV -kms_delete_object(kms_session_t *sp, kms_object_t *objp, - boolean_t ses_lock_held, boolean_t wrapper_only) -{ - CK_RV rv = CKR_OK; - - /* - * Check to see if the caller holds the lock on the session. - * If not, we need to acquire that lock in order to proceed. - */ - if (!ses_lock_held) { - /* Acquire the session lock. */ - (void) pthread_mutex_lock(&sp->session_mutex); - } - - /* Remove the object from the session's object list first. */ - if ((rv = kms_remove_object_from_session(objp, sp))) { - if (!ses_lock_held) - (void) pthread_mutex_unlock(&sp->session_mutex); - return (rv); - } - - if (!wrapper_only) - (void) pthread_mutex_unlock(&sp->session_mutex); - - kms_delete_object_cleanup(objp, wrapper_only); - - return (rv); -} - -/* - * Delete all the objects in a session. The caller holds the lock - * on the session. If the wrapper_only argument is TRUE, the caller only - * want to clean up object wrappers in the library. - */ -void -kms_delete_all_objects_in_session(kms_session_t *sp, - boolean_t wrapper_only) -{ - kms_object_t *objp = sp->object_list; - kms_object_t *objp1; - - /* Delete all the objects in the session. */ - while (objp) { - objp1 = objp->next; - (void) kms_delete_object(sp, objp, B_TRUE, - wrapper_only); - - objp = objp1; - } -} - -static CK_RV -add_to_search_result(kms_object_t *obj, find_context_t *fcontext, - CK_ULONG *num_result_alloc) -{ - /* - * allocate space for storing results if the currently - * allocated space is not enough - */ - if (*num_result_alloc <= fcontext->num_results) { - fcontext->objs_found = realloc(fcontext->objs_found, - sizeof (kms_object_t *) * (*num_result_alloc + BUFSIZ)); - if (fcontext->objs_found == NULL) { - return (CKR_HOST_MEMORY); - } - *num_result_alloc += BUFSIZ; - } - - (fcontext->objs_found)[(fcontext->num_results)++] = obj; - return (CKR_OK); -} - -static CK_RV -search_for_objects(kms_session_t *sp, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount, find_context_t *fcontext) -{ - kms_session_t *session_p; - kms_object_t *obj; - CK_OBJECT_CLASS pclasses[6]; /* classes attrs possibly exist */ - CK_ULONG num_pclasses; /* number of possible classes */ - CK_ULONG num_result_alloc = 0; /* spaces allocated for results */ - CK_RV rv = CKR_OK; - kms_slot_t *pslot = NULL; - boolean_t token_specified = B_FALSE; - boolean_t token_flag_val = B_FALSE; - int i; - - if (ulCount > 0) { - /* there are some search requirement */ - kms_process_find_attr(pclasses, &num_pclasses, - pTemplate, ulCount); - } - - /* - * look through template and see if it explicitly specifies - * whether we need to look for token objects or not - */ - for (i = 0; i < ulCount; i++) { - if (pTemplate[i].type == CKA_TOKEN) { - token_specified = B_TRUE; - token_flag_val = *((CK_BBOOL *)pTemplate[i].pValue); - break; - } - } - - pslot = get_slotinfo(); - - /* Acquire the slot lock */ - if (token_flag_val || !token_specified) { - (void) pthread_mutex_lock(&pslot->sl_mutex); - /* - * Make sure the object list is current. - */ - rv = KMS_RefreshObjectList(sp, pslot); - if (rv != CKR_OK) { - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (rv); - } - - obj = pslot->sl_tobj_list; - while (obj) { - (void) pthread_mutex_lock(&obj->object_mutex); - if (((token_specified) && (ulCount > 1)) || - ((!token_specified) && (ulCount > 0))) { - if (kms_find_match_attrs(obj, pclasses, - num_pclasses, pTemplate, ulCount)) { - rv = add_to_search_result( - obj, fcontext, &num_result_alloc); - } - } else { - /* no search criteria, just record the object */ - rv = add_to_search_result(obj, fcontext, - &num_result_alloc); - } - (void) pthread_mutex_unlock(&obj->object_mutex); - if (rv != CKR_OK) { - goto cleanup; - } - obj = obj->next; - } - (void) pthread_mutex_unlock(&pslot->sl_mutex); - } - - if (token_flag_val) { - return (rv); - } - - /* - * Go through all objects in each session. - * Acquire individual session lock for the session - * we are searching. - */ - session_p = pslot->sl_sess_list; - while (session_p) { - (void) pthread_mutex_lock(&session_p->session_mutex); - obj = session_p->object_list; - while (obj) { - (void) pthread_mutex_lock(&obj->object_mutex); - if (ulCount > 0) { - if (kms_find_match_attrs(obj, pclasses, - num_pclasses, pTemplate, ulCount)) { - rv = add_to_search_result( - obj, fcontext, &num_result_alloc); - } - } else { - /* no search criteria, just record the object */ - rv = add_to_search_result(obj, fcontext, - &num_result_alloc); - } - (void) pthread_mutex_unlock(&obj->object_mutex); - if (rv != CKR_OK) { - (void) pthread_mutex_unlock( - &session_p->session_mutex); - goto cleanup; - } - obj = obj->next; - } - (void) pthread_mutex_unlock(&session_p->session_mutex); - session_p = session_p->next; - } - -cleanup: - /* Release the slot lock */ - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (rv); -} - -/* - * Initialize the context for C_FindObjects() calls - */ -CK_RV -kms_find_objects_init(kms_session_t *sp, CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulCount) -{ - CK_RV rv = CKR_OK; - CK_OBJECT_CLASS class; /* for kms_validate_attr(). Value unused */ - find_context_t *fcontext; - - if (ulCount) { - rv = kms_validate_attr(pTemplate, ulCount, &class); - /* Make sure all attributes in template are valid */ - if (rv != CKR_OK) { - return (rv); - } - } - - /* prepare the find context */ - fcontext = calloc(1, sizeof (find_context_t)); - if (fcontext == NULL) { - return (CKR_HOST_MEMORY); - } - - rv = search_for_objects(sp, pTemplate, ulCount, fcontext); - if (rv != CKR_OK) { - free(fcontext); - return (rv); - } - - /* store the find_context in the session */ - sp->find_objects.context = (CK_VOID_PTR)fcontext; - - return (rv); -} - -void -kms_find_objects_final(kms_session_t *sp) -{ - find_context_t *fcontext; - - fcontext = sp->find_objects.context; - sp->find_objects.context = NULL; - sp->find_objects.flags = 0; - if (fcontext->objs_found != NULL) { - free(fcontext->objs_found); - } - - free(fcontext); -} - -CK_RV -kms_find_objects(kms_session_t *sp, CK_OBJECT_HANDLE *obj_found, - CK_ULONG max_obj_requested, CK_ULONG *found_obj_count) -{ - find_context_t *fcontext; - CK_ULONG num_obj_found = 0; - CK_ULONG i; - kms_object_t *obj; - - fcontext = sp->find_objects.context; - - for (i = fcontext->next_result_index; - ((num_obj_found < max_obj_requested) && - (i < fcontext->num_results)); - i++) { - obj = fcontext->objs_found[i]; - if (obj != NULL) { - (void) pthread_mutex_lock(&obj->object_mutex); - /* a sanity check to make sure the obj is still valid */ - if (obj->magic_marker == KMSTOKEN_OBJECT_MAGIC) { - obj_found[num_obj_found] = - (CK_OBJECT_HANDLE)obj; - num_obj_found++; - } - (void) pthread_mutex_unlock(&obj->object_mutex); - } - } - fcontext->next_result_index = i; - *found_obj_count = num_obj_found; - return (CKR_OK); -} - -/* - * Add an token object to the token object list in slot. - * - * This function will acquire the lock on the slot, and release - * that lock after adding the object to the slot's token object list. - */ -void -kms_add_token_object_to_slot(kms_object_t *objp, kms_slot_t *pslot) -{ - /* Acquire the slot lock. */ - (void) pthread_mutex_lock(&pslot->sl_mutex); - - /* Insert the new object in front of slot's token object list. */ - if (pslot->sl_tobj_list == NULL) { - pslot->sl_tobj_list = objp; - objp->next = NULL; - objp->prev = NULL; - } else { - pslot->sl_tobj_list->prev = objp; - objp->next = pslot->sl_tobj_list; - objp->prev = NULL; - pslot->sl_tobj_list = objp; - } - - /* Release the slot lock. */ - (void) pthread_mutex_unlock(&pslot->sl_mutex); -} - -/* - * Remove an token object from the slot's token object list. - * This routine is called by kms_delete_token_object(). - * The caller of this function hold the slot lock. - */ -void -kms_remove_token_object_from_slot(kms_slot_t *pslot, - kms_object_t *objp) -{ - - if (pslot->sl_tobj_list == objp) { - /* Object is the first one in the list */ - if (objp->next) { - pslot->sl_tobj_list = objp->next; - objp->next->prev = NULL; - } else { - /* Object is the only one in the list. */ - pslot->sl_tobj_list = NULL; - } - } else { - /* Object is not the first one in the list. */ - if (objp->next) { - /* Object is in the middle of the list. */ - if (objp->prev) - objp->prev->next = objp->next; - objp->next->prev = objp->prev; - } else if (objp->prev) { - /* Object is the last one in the list. */ - objp->prev->next = NULL; - } - } -} - -/* - * Delete a token object: - * - Remove the object from the slot's token object list. - * - Release the storage allocated to the object. - * - * The boolean argument slot_lock_held is used to indicate that whether - * the caller holds the slot lock or not. When the caller does not hold - * the slot lock, this function will acquire that lock in order to proceed, - * and also release that lock before returning to caller. - * - * The boolean argument wrapper_only is used to indicate that whether - * the caller only wants to the object wrapper from library. - */ -CK_RV -kms_delete_token_object(kms_slot_t *pslot, kms_session_t *sp, - kms_object_t *objp, boolean_t slot_lock_held, boolean_t wrapper_only) -{ - CK_RV rv = CKR_OK; - - if (!slot_lock_held) { - (void) pthread_mutex_lock(&pslot->sl_mutex); - } - if (!wrapper_only && objp->class == CKO_SECRET_KEY) { - /* Delete from KMS */ - rv = KMS_DestroyKey(sp, objp); - } - - /* Remove the object from the slot's token object list first. */ - kms_remove_token_object_from_slot(pslot, objp); - - /* Release the slot lock if the call doesn't hold the lock. */ - if (!slot_lock_held) { - (void) pthread_mutex_unlock(&pslot->sl_mutex); - } - - kms_delete_object_cleanup(objp, wrapper_only); - - return (rv); -} - -/* - * Clean up private object wrappers in this slot. The caller holds the slot - * lock. - */ -void -kms_cleanup_pri_objects_in_slot(kms_slot_t *pslot, - kms_session_t *cur_sp) -{ - kms_session_t *session_p; - kms_object_t *objp; - kms_object_t *objp1; - - /* - * Delete every private token object from - * the slot token object list. - */ - (void) pthread_mutex_lock(&pslot->sl_mutex); - objp = pslot->sl_tobj_list; - while (objp) { - objp1 = objp->next; - /* - * The first TRUE boolean argument indicates that the caller - * hold the slot lock. The second TRUE boolean argument - * indicates that the caller just wants to clean up the object - * wrapper from the library only. - */ - if (objp->bool_attr_mask & PRIVATE_BOOL_ON) { - (void) kms_delete_token_object(pslot, cur_sp, objp, - B_TRUE, B_TRUE); - } - objp = objp1; - } - - (void) pthread_mutex_unlock(&pslot->sl_mutex); - /* - * Walk through all the sessions in this slot and delete every - * private object. - */ - session_p = pslot->sl_sess_list; - while (session_p) { - - /* Delete all the objects in the session. */ - objp = session_p->object_list; - while (objp) { - objp1 = objp->next; - /* - * The FALSE boolean argument indicates that the - * caller does not hold the session lock. The TRUE - * boolean argument indicates that the caller just - * want to clean upt the object wrapper from the - * library only. - */ - if (objp->bool_attr_mask & PRIVATE_BOOL_ON) { - (void) kms_delete_object(session_p, - objp, B_FALSE, B_TRUE); - } - objp = objp1; - } - - session_p = session_p->next; - } -} - -/* - * Get the object size in bytes for the objects created in the library. - */ -CK_RV -kms_get_object_size(kms_object_t *obj, CK_ULONG_PTR pulSize) -{ - CK_RV rv = CKR_OK; - CK_ULONG obj_size; - - obj_size = sizeof (kms_object_t); - - switch (obj->class) { - case CKO_SECRET_KEY: - obj_size += OBJ_SEC_VALUE_LEN(obj); - break; - - default: - rv = CKR_OBJECT_HANDLE_INVALID; - } - - if (rv == CKR_OK) { - *pulSize = obj_size; - } - - return (rv); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsRand.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsRand.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include "kmsGlobal.h" - -/*ARGSUSED*/ -CK_RV -C_SeedRandom(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_GenerateRandom(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pRandomData, - CK_ULONG ulRandomLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSession.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSession.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,355 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsSession.h" -#include "kmsSlot.h" -#include "kmsKeystoreUtil.h" - -CK_RV -C_OpenSession(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, - CK_NOTIFY Notify, CK_SESSION_HANDLE_PTR phSession) -{ - CK_RV rv = CKR_OK; - kms_slot_t *pslot; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (!(flags & CKF_SERIAL_SESSION)) - return (CKR_SESSION_PARALLEL_NOT_SUPPORTED); - - if (phSession == NULL) - return (CKR_ARGUMENTS_BAD); - - if (slotID != KMS_TOKEN_SLOTID) { - return (CKR_SLOT_ID_INVALID); - } - - /* - * Acquire the slot lock to protect sl_state and sl_sess_list. - * These two fields need to be protected atomically, even though - * "sl_sess_list" is updated in kms_add_session(). - */ - pslot = get_slotinfo(); - (void) pthread_mutex_lock(&pslot->sl_mutex); - - /* If SO is logged in the slot, only the RW session is allowed. */ - if ((pslot->sl_state == CKU_SO) && !(flags & CKF_RW_SESSION)) { - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (CKR_SESSION_READ_WRITE_SO_EXISTS); - } - - /* Create a new session */ - rv = kms_add_session(slotID, flags, pApplication, Notify, - phSession); - - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (rv); -} - -CK_RV -C_CloseSession(CK_SESSION_HANDLE hSession) -{ - CK_RV rv; - - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - (void) pthread_mutex_lock(&session_p->session_mutex); - ses_lock_held = B_TRUE; - - /* - * Set SESSION_IS_CLOSING flag so any access to this - * session will be rejected. - */ - if (session_p->ses_close_sync & SESSION_IS_CLOSING) { - REFRELE(session_p, ses_lock_held); - return (CKR_SESSION_CLOSED); - } - session_p->ses_close_sync |= SESSION_IS_CLOSING; - - /* - * Decrement the session reference count. - * We hold the session lock, and REFRELE() - * will release the session lock for us. - */ - REFRELE(session_p, ses_lock_held); - - /* - * Delete a session by calling kms_delete_session() with - * a session pointer and two boolean arguments. The 3rd argument - * boolean value FALSE indicates that the caller does not - * hold the slot lock. The 4th argument boolean value B_FALSE - * indicates that we want to delete all the objects completely. - * - * kms_delete_session() will reset SESSION_IS_CLOSING - * flag after it is done. - */ - kms_delete_session(session_p, B_FALSE, B_FALSE); - return (rv); -} - -/*ARGSUSED*/ -CK_RV -C_CloseAllSessions(CK_SLOT_ID slotID) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* Delete all the sessions and release the allocated resources */ - kms_delete_all_sessions(B_FALSE); - - return (CKR_OK); -} - -/* - * Utility routine to get CK_STATE value for a session. - * The caller should not be holding the session lock. - */ -static CK_STATE -get_ses_state(kms_session_t *session_p) -{ - CK_STATE state; - kms_slot_t *pslot; - - pslot = get_slotinfo(); - (void) pthread_mutex_lock(&pslot->sl_mutex); - - if (pslot->sl_state == CKU_PUBLIC) { - state = (session_p->ses_RO) ? - CKS_RO_PUBLIC_SESSION : CKS_RW_PUBLIC_SESSION; - } else if (pslot->sl_state == CKU_USER) { - state = (session_p->ses_RO) ? - CKS_RO_USER_FUNCTIONS : CKS_RW_USER_FUNCTIONS; - } else if (pslot->sl_state == CKU_SO) { - state = CKS_RW_SO_FUNCTIONS; - } - - (void) pthread_mutex_unlock(&pslot->sl_mutex); - - return (state); -} - -CK_RV -C_GetSessionInfo(CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo) -{ - kms_session_t *session_p; - CK_RV rv; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (pInfo == NULL) - return (CKR_ARGUMENTS_BAD); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Provide information for the specified session */ - pInfo->slotID = session_p->ses_slotid; - pInfo->flags = session_p->flags; - pInfo->ulDeviceError = 0; - pInfo->state = get_ses_state(session_p); - - /* - * Decrement the session reference count. - */ - REFRELE(session_p, ses_lock_held); - - return (rv); -} - -/*ARGSUSED*/ -CK_RV -C_GetOperationState(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, - CK_ULONG_PTR pulOperationStateLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_SetOperationState(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, - CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, - CK_OBJECT_HANDLE hAuthenticationKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -CK_RV -C_Login(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, - CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) -{ - CK_RV rv = CKR_OK; - kms_session_t *session_p; - kms_slot_t *pslot; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if ((userType != CKU_SO) && (userType != CKU_USER)) { - return (CKR_USER_TYPE_INVALID); - } - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Acquire the slot lock */ - pslot = get_slotinfo(); - (void) pthread_mutex_lock(&pslot->sl_mutex); - - /* Check if the slot is logged in already */ - if ((pslot->sl_state == CKU_USER) || (pslot->sl_state == CKU_SO)) { - rv = CKR_USER_ALREADY_LOGGED_IN; - goto clean_exit; - } - - /* To login as SO, every session in this slot needs to be R/W */ - if (userType == CKU_SO) { - kms_session_t *sp; - boolean_t found; - - found = B_FALSE; - sp = pslot->sl_sess_list; - while (sp) { - /* - * Need not to lock individual sessions before - * accessing their "ses_RO" and "next" fields, - * because they are always accessed under the - * slot's mutex protection. - */ - if (sp->ses_RO) { - found = B_TRUE; - break; - } - sp = sp->next; - } - - if (found) { - rv = CKR_SESSION_READ_ONLY_EXISTS; - goto clean_exit; - } - } - - /* - * Login to KMS by attempting to load the profile using - * the given password. - */ - rv = KMS_LoadProfile( - &session_p->kmsProfile, - &session_p->configInfo, - (const char *)pPin, - (size_t)ulPinLen); - - if (rv == CKR_OK) { - /* Set the slot's session state. */ - pslot->sl_state = userType; - } - -clean_exit: - - REFRELE(session_p, ses_lock_held); - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (rv); -} - -CK_RV -C_Logout(CK_SESSION_HANDLE hSession) -{ - CK_RV rv = CKR_OK; - kms_session_t *session_p; - kms_slot_t *pslot; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Acquire the slot lock. */ - pslot = get_slotinfo(); - (void) pthread_mutex_lock(&pslot->sl_mutex); - - /* Check if the user or SO was logged in */ - if (pslot->sl_state == CKU_PUBLIC) { - rv = CKR_USER_NOT_LOGGED_IN; - goto clean_exit; - } - - KMS_UnloadProfile(&session_p->kmsProfile); - - /* - * If this slot was logged in as USER previously, we need to clean up - * all private object wrappers in library for this slot. - */ - kms_cleanup_pri_objects_in_slot(pslot, session_p); - - if (rv == CKR_OK) { - /* Reset the slot's session state. */ - pslot->sl_state = CKU_PUBLIC; - } - -clean_exit: - REFRELE(session_p, ses_lock_held); - (void) pthread_mutex_unlock(&pslot->sl_mutex); - return (rv); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSession.h --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSession.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef _KMSSESSION_H -#define _KMSSESSION_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#define K_SOLARIS_PLATFORM -#include "KMSAgent.h" - -#define KMSTOKEN_SESSION_MAGIC 0xECF00004 - -#define CRYPTO_OPERATION_ACTIVE 0x01 -#define CRYPTO_OPERATION_UPDATE 0x02 - -typedef struct { - CK_MECHANISM mech; - void *context; - uint32_t flags; -} kms_active_op_t; - -typedef struct { - char *label; - avl_node_t nodep; -} objlabel_t; - -#define KMSOFFSETOF(s, m) ((size_t)(&(((s *)0)->m))) - -/* - * Data stored in the KMS profile config file. - */ -typedef struct { - char name[BUFSIZ]; - char agentId[BUFSIZ]; - char agentAddr[BUFSIZ]; - int transTimeout; - int failoverLimit; - int discoveryFreq; - int securityMode; -} kms_cfg_info_t; - -typedef struct session { - CK_ULONG magic_marker; /* magic # be validated for integrity */ - pthread_mutex_t session_mutex; /* session's mutex lock */ - pthread_mutex_t ses_free_mutex; /* mutex used during closing session */ - pthread_cond_t ses_free_cond; /* cond variable for signal and wait */ - uint32_t ses_refcnt; /* session reference count */ - uint32_t ses_close_sync; /* session closing flags */ - boolean_t ses_RO; /* RO or RW session flag */ - CK_SLOT_ID ses_slotid; /* slotID saved from C_OpenSession() */ - - /* Place holder for parameters passed in the C_OpenSession */ - CK_FLAGS flags; - CK_NOTIFY Notify; - CK_VOID_PTR pApplication; - - /* Pointers to form the global session list */ - struct session *next; /* points to next session on the list */ - struct session *prev; /* points to prev session on the list */ - - struct object *object_list; /* points to list of objects */ - - kms_active_op_t find_objects; - kms_active_op_t encrypt; - kms_active_op_t decrypt; - - kms_cfg_info_t configInfo; - - avl_tree_t objlabel_tree; - KMSClientProfile kmsProfile; -} kms_session_t; - -/* - * The following structure is used to link the to-be-freed sessions - * into a linked list. The sessions on this linked list have - * not yet been freed via free() after C_CloseSession() call; instead - * they are added to this list. The actual free will take place when - * the number of sessions queued reaches MAX_SES_TO_BE_FREED, at which - * time the first session in the list will be freed. - */ -#define MAX_SES_TO_BE_FREED 300 - -typedef struct ses_to_be_freed_list { - kms_session_t *first; /* points to the first session in the list */ - kms_session_t *last; /* points to the last session in the list */ - uint32_t count; /* current total sessions in the list */ - pthread_mutex_t ses_to_be_free_mutex; -} ses_to_be_freed_list_t; - -extern ses_to_be_freed_list_t ses_delay_freed; -extern CK_ULONG kms_session_cnt; -extern CK_ULONG kms_session_rw_cnt; - -/* - * Flag definitions for ses_close_sync - */ -#define SESSION_IS_CLOSING 1 /* Session is in a closing state */ -#define SESSION_REFCNT_WAITING 2 /* Waiting for session reference */ - /* count to become zero */ -/* - * This macro is used to decrement the session reference count by one. - * - * The caller of this macro uses the argument lock_held to indicate that - * whether the caller holds the lock on the session or not. - * - * REFRELE macro does the following: - * 1) Get the session lock if the caller does not hold it. - * 2) Decrement the session reference count by one. - * 3) If the session reference count becomes zero after being decremented, - * and there is a closing session thread in the wait state, then - * call pthread_cond_signal() to wake up that thread who is blocked - * in the session deletion routine due to non-zero reference ount. - * 4) Always release the session lock. - */ -#define REFRELE(s, ses_lock_held) { \ - if (!ses_lock_held) \ - (void) pthread_mutex_lock(&s->session_mutex); \ - if ((--((s)->ses_refcnt) == 0) && \ - (s->ses_close_sync & SESSION_REFCNT_WAITING)) { \ - (void) pthread_mutex_unlock(&s->session_mutex); \ - (void) pthread_cond_signal(&s->ses_free_cond); \ - } else { \ - (void) pthread_mutex_unlock(&s->session_mutex); \ - } \ -} - - -/* - * Function Prototypes. - */ -CK_RV -handle2session(CK_SESSION_HANDLE hSession, kms_session_t **session_p); - -void -kms_delete_all_sessions(boolean_t wrapper_only); - -void -kms_delete_all_objects_in_session(kms_session_t *sp, - boolean_t wrapper_only); - -CK_RV -kms_add_session(CK_SLOT_ID slotID, CK_FLAGS flags, - CK_VOID_PTR pApplication, CK_NOTIFY notify, CK_ULONG *phSession); - -void -kms_delete_session(kms_session_t *sp, - boolean_t lock_held, boolean_t wrapper_only); - -void -kms_session_delay_free(kms_session_t *sp); - -void kms_acquire_all_slots_mutexes(); -void kms_release_all_slots_mutexes(); - -#ifdef __cplusplus -} -#endif - -#endif /* _KMSSESSION_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSessionUtil.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSessionUtil.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,491 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include -#include "kmsGlobal.h" -#include "kmsSession.h" -#include "kmsSlot.h" -#include "kmsKeystoreUtil.h" - -static pthread_mutex_t delete_sessions_mutex = PTHREAD_MUTEX_INITIALIZER; -CK_ULONG kms_session_cnt = 0; -CK_ULONG kms_session_rw_cnt = 0; - -/* - * Delete all the sessions. First, obtain the slot lock. - * Then start to delete one session at a time. The boolean wrapper_only - * argument indicates that whether the caller only wants to clean up the - * session wrappers and the object wrappers in the library. - * - When this function is called by C_CloseAllSessions or indirectly by - * C_Finalize, wrapper_only is FALSE. - * - When this function is called by cleanup_child, wrapper_only is TRUE. - */ -void -kms_delete_all_sessions(boolean_t wrapper_only) -{ - kms_session_t *session_p; - kms_slot_t *pslot; - - (void) pthread_mutex_lock(&delete_sessions_mutex); - - pslot = get_slotinfo(); - - /* - * Delete all the sessions in the slot's session list. - * The routine kms_delete_session() updates the linked list. - * So, we do not need to maintain the list here. - */ - for (;;) { - (void) pthread_mutex_lock(&pslot->sl_mutex); - if (pslot->sl_sess_list == NULL) - break; - - session_p = pslot->sl_sess_list; - /* - * Set SESSION_IS_CLOSING flag so any access to this - * session will be rejected. - */ - (void) pthread_mutex_lock(&session_p->session_mutex); - if (session_p->ses_close_sync & SESSION_IS_CLOSING) { - (void) pthread_mutex_unlock(&session_p->session_mutex); - continue; - } - session_p->ses_close_sync |= SESSION_IS_CLOSING; - (void) pthread_mutex_unlock(&session_p->session_mutex); - - (void) pthread_mutex_unlock(&pslot->sl_mutex); - kms_delete_session(session_p, B_FALSE, wrapper_only); - } - (void) pthread_mutex_unlock(&pslot->sl_mutex); - (void) pthread_mutex_unlock(&delete_sessions_mutex); -} - -static int -labelcmp(const void *a, const void *b) -{ - objlabel_t *obja = (objlabel_t *)a; - objlabel_t *objb = (objlabel_t *)b; - int n; - - if (obja == NULL || obja->label == NULL) - return (-1); - if (objb == NULL || objb->label == NULL) - return (1); - - n = strcmp((char *)obja->label, (char *)objb->label); - if (n == 0) - return (0); - else if (n < 0) - return (-1); - return (1); -} - -/* - * Create a new session struct, and add it to the slot's session list. - * - * This function is called by C_OpenSession(), which hold the slot lock. - */ -CK_RV -kms_add_session(CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, - CK_NOTIFY notify, CK_ULONG *sessionhandle_p) -{ - kms_session_t *new_sp = NULL; - kms_slot_t *pslot; - CK_RV rv; - - /* Allocate a new session struct */ - new_sp = calloc(1, sizeof (kms_session_t)); - if (new_sp == NULL) { - return (CKR_HOST_MEMORY); - } - - new_sp->magic_marker = KMSTOKEN_SESSION_MAGIC; - new_sp->pApplication = pApplication; - new_sp->Notify = notify; - new_sp->flags = flags; - new_sp->ses_RO = (flags & CKF_RW_SESSION) ? B_FALSE : B_TRUE; - new_sp->ses_slotid = slotID; - new_sp->object_list = NULL; - new_sp->ses_refcnt = 0; - new_sp->ses_close_sync = 0; - - avl_create(&new_sp->objlabel_tree, labelcmp, sizeof (objlabel_t), - KMSOFFSETOF(objlabel_t, nodep)); - - rv = kms_reload_labels(new_sp); - if (rv != CKR_OK) { - free(new_sp); - return (rv); - } - - /* Initialize the lock for the newly created session */ - if (pthread_mutex_init(&new_sp->session_mutex, NULL) != 0) { - free(new_sp); - return (CKR_CANT_LOCK); - } - - pslot = get_slotinfo(); - - (void) pthread_mutex_init(&new_sp->ses_free_mutex, NULL); - (void) pthread_cond_init(&new_sp->ses_free_cond, NULL); - - /* Insert the new session in front of the slot's session list */ - if (pslot->sl_sess_list == NULL) { - pslot->sl_sess_list = new_sp; - new_sp->prev = NULL; - new_sp->next = NULL; - } else { - pslot->sl_sess_list->prev = new_sp; - new_sp->next = pslot->sl_sess_list; - new_sp->prev = NULL; - pslot->sl_sess_list = new_sp; - } - - /* Type casting the address of a session struct to a session handle */ - *sessionhandle_p = (CK_ULONG)new_sp; - return (CKR_OK); -} - -/* - * Delete a session: - * - Remove the session from the slot's session list. - * - Release all the objects created by the session. - * - * The boolean argument slot_lock_held is used to indicate that whether - * the caller of this function holds the slot lock or not. - * - When called by kms_delete_all_sessions(), which is called by - * C_Finalize() or C_CloseAllSessions() -- slot_lock_held = TRUE. - * - When called by C_CloseSession() -- slot_lock_held = FALSE. - */ -void -kms_delete_session(kms_session_t *session_p, - boolean_t slot_lock_held, boolean_t wrapper_only) -{ - kms_slot_t *pslot; - kms_object_t *objp; - kms_object_t *objp1; - - /* - * Check to see if the caller holds the lock on the global - * session list. If not, we need to acquire that lock in - * order to proceed. - */ - pslot = get_slotinfo(); - if (!slot_lock_held) { - /* Acquire the slot lock */ - (void) pthread_mutex_lock(&pslot->sl_mutex); - } - - /* - * Remove the session from the slot's session list first. - */ - if (pslot->sl_sess_list == session_p) { - /* Session is the first one in the list */ - if (session_p->next) { - pslot->sl_sess_list = session_p->next; - session_p->next->prev = NULL; - } else { - /* Session is the only one in the list */ - pslot->sl_sess_list = NULL; - } - } else { - /* Session is not the first one in the list */ - if (session_p->next) { - /* Session is in the middle of the list */ - session_p->prev->next = session_p->next; - session_p->next->prev = session_p->prev; - } else { - /* Session is the last one in the list */ - session_p->prev->next = NULL; - } - } - - if (!slot_lock_held) { - /* - * If the slot lock is obtained by - * this function, then release that lock after - * removing the session from session linked list. - * We want the releasing of the objects of the - * session, and freeing of the session itself to - * be done without holding the slot's session list - * lock. - */ - (void) pthread_mutex_unlock(&pslot->sl_mutex); - } - - /* Acquire the individual session lock */ - (void) pthread_mutex_lock(&session_p->session_mutex); - - /* - * Make sure another thread hasn't freed the session. - */ - if (session_p->magic_marker != KMSTOKEN_SESSION_MAGIC) { - (void) pthread_mutex_unlock(&session_p->session_mutex); - return; - } - - /* - * The deletion of a session must be blocked when the session reference - * count is not zero. This means that if the thread that is attempting - * to close the session must wait until the prior operations on this - * session are finished. - * - * Unless we are being forced to shut everything down, this only - * happens if the library's _fini() is running not if someone - * explicitly called C_Finalize(). - */ - (void) pthread_mutex_lock(&session_p->ses_free_mutex); - - if (wrapper_only) { - session_p->ses_refcnt = 0; - } - - while (session_p->ses_refcnt != 0) { - /* - * We set the SESSION_REFCNT_WAITING flag before we put - * this closing thread in a wait state, so other non-closing - * operation thread will wake it up only when - * the session reference count becomes zero and this flag - * is set. - */ - session_p->ses_close_sync |= SESSION_REFCNT_WAITING; - (void) pthread_mutex_unlock(&session_p->session_mutex); - (void) pthread_cond_wait(&session_p->ses_free_cond, - &session_p->ses_free_mutex); - (void) pthread_mutex_lock(&session_p->session_mutex); - } - - session_p->ses_close_sync &= ~SESSION_REFCNT_WAITING; - - /* Mark session as no longer valid. */ - session_p->magic_marker = 0; - - (void) pthread_mutex_unlock(&session_p->ses_free_mutex); - (void) pthread_mutex_destroy(&session_p->ses_free_mutex); - (void) pthread_cond_destroy(&session_p->ses_free_cond); - - /* - * Remove all the objects created in this session, waiting - * until each object's refcnt is 0. - */ - kms_delete_all_objects_in_session(session_p, wrapper_only); - - /* Close the KMS agent profile. */ - KMS_UnloadProfile(&session_p->kmsProfile); - - /* Reset SESSION_IS_CLOSING flag. */ - session_p->ses_close_sync &= ~SESSION_IS_CLOSING; - - kms_clear_label_list(&session_p->objlabel_tree); - avl_destroy(&session_p->objlabel_tree); - - (void) pthread_mutex_unlock(&session_p->session_mutex); - /* Destroy the individual session lock */ - (void) pthread_mutex_destroy(&session_p->session_mutex); - - kms_session_delay_free(session_p); - - /* - * If there is no more session remained in this slot, reset the slot's - * session state to CKU_PUBLIC. Also, clean up all the token object - * wrappers in the library for this slot. - */ - /* Acquire the slot lock if lock is not held */ - if (!slot_lock_held) { - (void) pthread_mutex_lock(&pslot->sl_mutex); - } - - if (pslot->sl_sess_list == NULL) { - /* Reset the session auth state. */ - pslot->sl_state = CKU_PUBLIC; - - /* Clean up token object wrappers. */ - objp = pslot->sl_tobj_list; - while (objp) { - objp1 = objp->next; - (void) pthread_mutex_destroy(&objp->object_mutex); - (void) kms_cleanup_object(objp); - free(objp); - objp = objp1; - } - pslot->sl_tobj_list = NULL; - } - - /* Release the slot lock if lock is not held */ - if (!slot_lock_held) { - (void) pthread_mutex_unlock(&pslot->sl_mutex); - } -} - -/* - * This function is used to type cast a session handle to a pointer to - * the session struct. Also, it does the following things: - * 1) Check to see if the session struct is tagged with a session - * magic number. This is to detect when an application passes - * a bogus session pointer. - * 2) Acquire the locks on the designated session. - * 3) Check to see if the session is in the closing state that another - * thread is performing. - * 4) Increment the session reference count by one. This is to prevent - * this session from being closed by other thread. - * 5) Release the locks on the designated session. - */ -CK_RV -handle2session(CK_SESSION_HANDLE hSession, kms_session_t **session_p) -{ - kms_session_t *sp = (kms_session_t *)(hSession); - CK_RV rv; - - if ((sp == NULL) || - (sp->magic_marker != KMSTOKEN_SESSION_MAGIC)) { - return (CKR_SESSION_HANDLE_INVALID); - } else { - (void) pthread_mutex_lock(&sp->session_mutex); - if (sp->ses_close_sync & SESSION_IS_CLOSING) { - rv = CKR_SESSION_CLOSED; - } else { - /* Increment session ref count. */ - sp->ses_refcnt++; - rv = CKR_OK; - } - (void) pthread_mutex_unlock(&sp->session_mutex); - } - - if (rv == CKR_OK) - *session_p = sp; - - return (rv); -} - -/* - * This function adds the to-be-freed session to a linked list. - * When the number of sessions queued in the linked list reaches the - * maximum threshold MAX_SES_TO_BE_FREED, it will free the first - * session (FIFO) in the list. - */ -void -kms_session_delay_free(kms_session_t *sp) -{ - kms_session_t *tmp; - - (void) pthread_mutex_lock(&ses_delay_freed.ses_to_be_free_mutex); - - /* Add the newly deleted session at the end of the list */ - sp->next = NULL; - if (ses_delay_freed.first == NULL) { - ses_delay_freed.last = sp; - ses_delay_freed.first = sp; - } else { - ses_delay_freed.last->next = sp; - ses_delay_freed.last = sp; - } - - if (++ses_delay_freed.count >= MAX_SES_TO_BE_FREED) { - /* - * Free the first session in the list only if - * the total count reaches maximum threshold. - */ - ses_delay_freed.count--; - tmp = ses_delay_freed.first->next; - free(ses_delay_freed.first); - ses_delay_freed.first = tmp; - } - (void) pthread_mutex_unlock(&ses_delay_freed.ses_to_be_free_mutex); -} - -/* - * Acquire all slots' mutexes and all their sessions' mutexes. - * Order: - * 1. delete_sessions_mutex - * for each slot: - * 2. pslot->sl_mutex - * for each session: - * 3. session_p->session_mutex - * 4. session_p->ses_free_mutex - */ -void -kms_acquire_all_slots_mutexes() -{ - kms_slot_t *pslot; - kms_session_t *session_p; - - (void) pthread_mutex_lock(&delete_sessions_mutex); - - pslot = get_slotinfo(); - (void) pthread_mutex_lock(&pslot->sl_mutex); - - /* Iterate through sessions acquiring all mutexes */ - session_p = pslot->sl_sess_list; - while (session_p) { - struct object *objp; - - (void) pthread_mutex_lock(&session_p->session_mutex); - (void) pthread_mutex_lock(&session_p->ses_free_mutex); - - objp = session_p->object_list; - while (objp) { - (void) pthread_mutex_lock(&objp->object_mutex); - objp = objp->next; - } - - session_p = session_p->next; - } -} - -/* Release in opposite order to kms_acquire_all_slots_mutexes(). */ -void -kms_release_all_slots_mutexes() -{ - kms_slot_t *pslot; - kms_session_t *session_p; - - pslot = get_slotinfo(); - - /* Iterate through sessions releasing all mutexes */ - session_p = pslot->sl_sess_list; - while (session_p) { - struct object *objp; - - objp = session_p->object_list; - while (objp) { - (void) pthread_mutex_unlock(&objp->object_mutex); - objp = objp->next; - } - - (void) pthread_mutex_unlock(&session_p->ses_free_mutex); - (void) pthread_mutex_unlock(&session_p->session_mutex); - session_p = session_p->next; - } - - /* - * acquired in "acquire_all_slots_mutexes" which only - * happens just prior to a fork. - */ - (void) pthread_mutex_unlock(&pslot->sl_mutex); - (void) pthread_mutex_unlock(&delete_sessions_mutex); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSign.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSign.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include "kmsGlobal.h" - -/*ARGSUSED*/ -CK_RV -C_SignInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_Sign(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - - -/*ARGSUSED*/ -CK_RV -C_SignUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_SignFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_SignRecoverInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); - -} - -/*ARGSUSED*/ -CK_RV -C_SignRecover(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSlot.h --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSlot.h Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#ifndef _KMS_SLOT_H -#define _KMS_SLOT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kmsSession.h" - -#define CKU_PUBLIC 2 /* default session auth. state */ - -typedef struct kms_slot { - CK_SLOT_ID sl_provider_id; /* kernel provider ID */ - kms_session_t *sl_sess_list; /* all open sessions */ - CK_USER_TYPE sl_state; /* session's auth. state */ - struct object *sl_tobj_list; /* token object list */ - pthread_mutex_t sl_mutex; - - /* - * The valid values are defined above. - */ - uint32_t sl_flags; - int total_threshold_count; -} kms_slot_t; - -#define KMS_TOKEN_SLOTID 1 -#define KMS_SLOTS 1 - -/* - * Function Prototypes. - */ -CK_RV kms_slottable_init(); -void cleanup_slottable(); -kms_slot_t *get_slotinfo(); - -#ifdef __cplusplus -} -#endif - -#endif /* _KMS_SLOT_H */ diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSlotToken.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSlotToken.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,386 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - */ - - -#include -#include -#include -#include -#include -#include - -#include "kmsGlobal.h" -#include "kmsSlot.h" -#include "kmsKeystoreUtil.h" - -/* - * Just basic AES mechanisms (for now...) - */ -static CK_MECHANISM_TYPE kms_mechanisms[] = { - CKM_AES_KEY_GEN, - CKM_AES_CBC, - CKM_AES_CBC_PAD -}; - -/* - * KMS only supports 256 bit keys, so the range below is MAX-MAX - * instead of MIN-MAX. - */ -static CK_MECHANISM_INFO kms_mechanism_info[] = { - {AES_MAX_KEY_BYTES, AES_MAX_KEY_BYTES, CKF_GENERATE}, - {AES_MAX_KEY_BYTES, AES_MAX_KEY_BYTES, CKF_ENCRYPT|CKF_DECRYPT| - CKF_WRAP|CKF_UNWRAP}, /* CKM_AES_CBC */ - {AES_MAX_KEY_BYTES, AES_MAX_KEY_BYTES, CKF_ENCRYPT|CKF_DECRYPT| - CKF_WRAP|CKF_UNWRAP} /* CKM_AES_CBC_PAD */ -}; - -/* ARGSUSED */ -CK_RV -C_GetSlotList(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, - CK_ULONG_PTR pulCount) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (pulCount == NULL) { - return (CKR_ARGUMENTS_BAD); - } - - /* - * If KMS is not available or initialized, return 0 slots - * but CKR_OK status. - */ - if (!kms_is_initialized()) { - *pulCount = 0; - return (CKR_OK); - } - - if (pSlotList == NULL) { - *pulCount = KMS_SLOTS; - return (CKR_OK); - } - - if (*pulCount < KMS_SLOTS) { - *pulCount = KMS_SLOTS; - return (CKR_BUFFER_TOO_SMALL); - } - - *pulCount = 1; - pSlotList[0] = KMS_TOKEN_SLOTID; - - return (CKR_OK); -} - -CK_RV -C_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (slotID != KMS_TOKEN_SLOTID || - !kms_is_initialized()) { - return (CKR_SLOT_ID_INVALID); - } - - if (pInfo == NULL) - return (CKR_ARGUMENTS_BAD); - - /* Provide information about the slot in the provided buffer */ - (void) strncpy((char *)pInfo->slotDescription, SLOT_DESCRIPTION, - 64); - (void) strncpy((char *)pInfo->manufacturerID, MANUFACTURER_ID, 32); - pInfo->flags = CKF_TOKEN_PRESENT; - pInfo->hardwareVersion.major = HARDWARE_VERSION_MAJOR; - pInfo->hardwareVersion.minor = HARDWARE_VERSION_MINOR; - pInfo->firmwareVersion.major = FIRMWARE_VERSION_MAJOR; - pInfo->firmwareVersion.minor = FIRMWARE_VERSION_MINOR; - - return (CKR_OK); -} - -CK_RV -C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) -{ - kms_cfg_info_t kmscfg; - KMSAGENT_PROFILE_FLAGS kmsflags = 0; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (slotID != KMS_TOKEN_SLOTID || - !kms_is_initialized()) - return (CKR_SLOT_ID_INVALID); - - if (pInfo == NULL) - return (CKR_ARGUMENTS_BAD); - - /* Provide information about a token in the provided buffer */ - (void) strncpy((char *)pInfo->label, KMS_TOKEN_LABEL, 32); - (void) strncpy((char *)pInfo->manufacturerID, MANUFACTURER_ID, 32); - (void) strncpy((char *)pInfo->model, KMS_TOKEN_MODEL, 16); - (void) strncpy((char *)pInfo->serialNumber, KMS_TOKEN_SERIAL, 16); - - pInfo->flags = KMS_TOKEN_FLAGS; - pInfo->ulMaxSessionCount = CK_EFFECTIVELY_INFINITE; - pInfo->ulSessionCount = kms_session_cnt; - pInfo->ulMaxRwSessionCount = CK_EFFECTIVELY_INFINITE; - pInfo->ulRwSessionCount = kms_session_rw_cnt; - pInfo->ulMaxPinLen = MAX_PIN_LEN; - pInfo->ulMinPinLen = MIN_PIN_LEN; - pInfo->ulTotalPublicMemory = CK_UNAVAILABLE_INFORMATION; - pInfo->ulFreePublicMemory = CK_UNAVAILABLE_INFORMATION; - pInfo->ulTotalPrivateMemory = CK_UNAVAILABLE_INFORMATION; - pInfo->ulFreePrivateMemory = CK_UNAVAILABLE_INFORMATION; - pInfo->hardwareVersion.major = HARDWARE_VERSION_MAJOR; - pInfo->hardwareVersion.minor = HARDWARE_VERSION_MINOR; - pInfo->firmwareVersion.major = FIRMWARE_VERSION_MAJOR; - pInfo->firmwareVersion.minor = FIRMWARE_VERSION_MINOR; - (void) memset(pInfo->utcTime, ' ', 16); - - if (KMS_GetConfigInfo(&kmscfg) == CKR_OK && - KMSAgent_GetProfileStatus(kmscfg.name, &kmsflags) == - KMS_AGENT_STATUS_OK) { - - if ((kmsflags & KMSAGENT_PROFILE_EXISTS_FLAG) && - (kmsflags & KMSAGENT_CLIENTKEY_EXISTS_FLAG)) - pInfo->flags |= CKF_TOKEN_INITIALIZED; - else - pInfo->flags &= ~CKF_TOKEN_INITIALIZED; - } - return (CKR_OK); -} - -/*ARGSUSED*/ -CK_RV -C_WaitForSlotEvent(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, CK_VOID_PTR pReserved) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - - -CK_RV -C_GetMechanismList(CK_SLOT_ID slotID, - CK_MECHANISM_TYPE_PTR pMechanismList, - CK_ULONG_PTR pulCount) -{ - int i; - ulong_t mechnum; - - /* - * Just check to see if the library has been - * properly initialized. - */ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * This is different from above check, this verifies that - * the KMS token is actually configured. - */ - if (slotID != KMS_TOKEN_SLOTID || - !kms_is_initialized()) - return (CKR_SLOT_ID_INVALID); - - mechnum = sizeof (kms_mechanisms) / sizeof (CK_MECHANISM_TYPE); - if (pMechanismList == NULL) { - *pulCount = mechnum; - return (CKR_OK); - } - if (*pulCount < mechnum) { - *pulCount = mechnum; - return (CKR_BUFFER_TOO_SMALL); - } - for (i = 0; i < mechnum; i++) - pMechanismList[i] = kms_mechanisms[i]; - - *pulCount = mechnum; - - return (CKR_OK); -} - -CK_RV -C_GetMechanismInfo(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, - CK_MECHANISM_INFO_PTR pInfo) -{ - CK_ULONG mechnum, i; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (slotID != KMS_TOKEN_SLOTID || - !kms_is_initialized()) - return (CKR_SLOT_ID_INVALID); - - if (pInfo == NULL) { - return (CKR_ARGUMENTS_BAD); - } - - mechnum = sizeof (kms_mechanisms) / sizeof (CK_MECHANISM_TYPE); - for (i = 0; i < mechnum; i++) { - if (kms_mechanisms[i] == type) - break; - } - - if (i == mechnum) - /* unsupported mechanism */ - return (CKR_MECHANISM_INVALID); - - pInfo->ulMinKeySize = kms_mechanism_info[i].ulMinKeySize; - pInfo->ulMaxKeySize = kms_mechanism_info[i].ulMaxKeySize; - pInfo->flags = kms_mechanism_info[i].flags; - - return (CKR_OK); -} - -/*ARGSUSED*/ -CK_RV -C_InitToken(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen, - CK_UTF8CHAR_PTR pLabel) -{ - CK_RV rv = CKR_FUNCTION_FAILED; - kms_cfg_info_t kmscfg; - KMSAGENT_PROFILE_FLAGS kmsflags; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - if (slotID != KMS_TOKEN_SLOTID || - !kms_is_initialized()) - return (CKR_SLOT_ID_INVALID); - - if (KMS_GetConfigInfo(&kmscfg) != CKR_OK || - KMSAgent_GetProfileStatus(kmscfg.name, &kmsflags) != - KMS_AGENT_STATUS_OK) - return (CKR_FUNCTION_FAILED); - - if (!(kmsflags & KMSAGENT_PROFILE_EXISTS_FLAG) || - !(kmsflags & KMSAGENT_CLIENTKEY_EXISTS_FLAG)) { - KMSClientProfile kmsProfile; - /* - * Attempt to enroll and load a KMS profile. - * This will force the KMSAgent library to fetch - * the profile, the CA certificate, and the - * client private key and store them locally so that - * the KMS agent API can be used later. - */ - rv = KMS_LoadProfile( - &kmsProfile, - &kmscfg, - (const char *)pPin, - (size_t)ulPinLen); - - if (rv == CKR_OK) - KMS_UnloadProfile(&kmsProfile); - } - return (rv); -} - -/*ARGSUSED*/ -CK_RV -C_InitPIN(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * Could be supported once the agent library supports - * storing the client certificate in a PKCS#12 file. - */ - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -CK_RV -C_SetPIN(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, - CK_ULONG ulOldLen, CK_UTF8CHAR_PTR pNewPin, CK_ULONG ulNewLen) -{ - CK_RV rv = CKR_OK; - kms_session_t *session_p; - boolean_t ses_lock_held = B_FALSE; - - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - /* - * Obtain the session pointer. Also, increment the session - * reference count. - */ - rv = handle2session(hSession, &session_p); - if (rv != CKR_OK) - return (rv); - - /* Make sure it is a RW session. */ - if (session_p->ses_RO) { - rv = CKR_SESSION_READ_ONLY; - REFRELE(session_p, ses_lock_held); - return (rv); - } - - /* - * If the token is not yet initialized, we cannot set the pin. - */ - if (!kms_is_initialized()) { - REFRELE(session_p, ses_lock_held); - return (CKR_FUNCTION_FAILED); - } - - if (pOldPin == NULL || ulOldLen == 0 || - pNewPin == NULL || ulNewLen == 0) { - REFRELE(session_p, ses_lock_held); - return (CKR_ARGUMENTS_BAD); - } - - if (!kms_is_pin_set()) { - /* - * We don't yet support this mode since - * the KMS private key file will automatically - * be generated using the KMS Agent passphrase - * which is initialized out-of-band. - */ - rv = CKR_FUNCTION_NOT_SUPPORTED; - - } else { - /* - * Login to KMS by attempting to load the profile using - * the given password. - */ - rv = KMS_LoadProfile(&session_p->kmsProfile, - &session_p->configInfo, - (const char *)pOldPin, - (size_t)ulOldLen); - if (rv == CKR_USER_ANOTHER_ALREADY_LOGGED_IN) - rv = CKR_OK; - - if (rv == CKR_OK) - rv = KMS_ChangeLocalPWD(session_p, - (const char *)pOldPin, - (const char *)pNewPin); - } - - REFRELE(session_p, ses_lock_held); - return (rv); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsSlottable.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsSlottable.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include -#include "kmsGlobal.h" -#include "kmsSlot.h" - -static kms_slot_t *slotinfo = NULL; - -/* - * Initialize the slotinfo record. - * - * This function is called from C_Initialize() only. Since C_Initialize() - * holds the global mutex lock, there is no need to acquire another lock - * in this routine to protect the slot table. - */ -CK_RV -kms_slottable_init() -{ - CK_RV rv = CKR_OK; - - /* Allocate space for the slot table */ - slotinfo = calloc(KMS_SLOTS, sizeof (kms_slot_t)); - if (slotinfo == NULL) - return (CKR_HOST_MEMORY); - - slotinfo->sl_sess_list = NULL; - slotinfo->sl_tobj_list = NULL; - slotinfo->sl_state = CKU_PUBLIC; - - /* Initialize this slot's mutex */ - if (pthread_mutex_init(&slotinfo->sl_mutex, NULL) != 0) { - (void) free(slotinfo); - slotinfo = NULL; - return (CKR_FUNCTION_FAILED); - } - - return (rv); -} - -void -cleanup_slottable() -{ - if (slotinfo != NULL) { - (void) pthread_mutex_destroy(&slotinfo->sl_mutex); - (void) free(slotinfo); - slotinfo = NULL; - } -} - -kms_slot_t * -get_slotinfo() -{ - return (slotinfo); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/kmsVerify.c --- a/usr/src/lib/pkcs11/pkcs11_kms/common/kmsVerify.c Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - */ - -#include -#include "kmsGlobal.h" - -/*ARGSUSED*/ -CK_RV -C_VerifyInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_Verify(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, - CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_VerifyUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_VerifyFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, - CK_ULONG ulSignatureLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_VerifyRecoverInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} - -/*ARGSUSED*/ -CK_RV -C_VerifyRecover(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, - CK_ULONG ulSignatureLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen) -{ - if (!kms_initialized) - return (CKR_CRYPTOKI_NOT_INITIALIZED); - - return (CKR_FUNCTION_NOT_SUPPORTED); -} diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/common/mapfile-vers --- a/usr/src/lib/pkcs11/pkcs11_kms/common/mapfile-vers Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - -$mapfile_version 2 - -SYMBOL_VERSION SUNW_1.1 { - global: - C_CancelFunction; - C_CloseAllSessions; - C_CloseSession; - C_CopyObject; - C_CreateObject; - C_Decrypt; - C_DecryptDigestUpdate; - C_DecryptFinal; - C_DecryptInit; - C_DecryptUpdate; - C_DecryptVerifyUpdate; - C_DeriveKey; - C_DestroyObject; - C_Digest; - C_DigestEncryptUpdate; - C_DigestFinal; - C_DigestInit; - C_DigestKey; - C_DigestUpdate; - C_Encrypt; - C_EncryptFinal; - C_EncryptInit; - C_EncryptUpdate; - C_Finalize; - C_FindObjects; - C_FindObjectsFinal; - C_FindObjectsInit; - C_GenerateKey; - C_GenerateKeyPair; - C_GenerateRandom; - C_GetAttributeValue; - C_GetFunctionList; - C_GetFunctionStatus; - C_GetInfo; - C_GetMechanismInfo; - C_GetMechanismList; - C_GetObjectSize; - C_GetOperationState; - C_GetSessionInfo; - C_GetSlotInfo; - C_GetSlotList; - C_GetTokenInfo; - C_Initialize; - C_InitPIN; - C_InitToken; - C_Login; - C_Logout; - C_OpenSession; - C_SeedRandom; - C_SetAttributeValue; - C_SetOperationState; - C_SetPIN; - C_Sign; - C_SignEncryptUpdate; - C_SignFinal; - C_SignInit; - C_SignRecover; - C_SignRecoverInit; - C_SignUpdate; - C_UnwrapKey; - C_Verify; - C_VerifyFinal; - C_VerifyInit; - C_VerifyRecover; - C_VerifyRecoverInit; - C_VerifyUpdate; - C_WaitForSlotEvent; - C_WrapKey; - local: - *; -}; diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/i386/Makefile --- a/usr/src/lib/pkcs11/pkcs11_kms/i386/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com - -install: all $(ROOTLIBS) $(ROOTLINKS) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/sparc/Makefile --- a/usr/src/lib/pkcs11/pkcs11_kms/sparc/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# -include ../Makefile.com - -install: all $(ROOTLIBS) $(ROOTLINKS) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/lib/pkcs11/pkcs11_kms/sparcv9/Makefile --- a/usr/src/lib/pkcs11/pkcs11_kms/sparcv9/Makefile Sun Mar 11 22:00:47 2012 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# - -# -# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -# - - -include ../Makefile.com -include ../../../Makefile.lib.64 - -LINTCHECKFLAGS += -erroff=E_INCONS_ARG_DECL2 \ - -erroff=E_INCONS_ARG_USED2 \ - -erroff=E_INCONS_VAL_TYPE_DECL2 \ - -erroff=E_INCONS_VAL_TYPE_USED2 \ - -erroff=E_FUNC_DECL_VAR_ARG2 - -install: all $(ROOTLIBS64) $(ROOTLINKS64) diff -r 776c3d9cae69 -r 739a180bd323 usr/src/pkg/manifests/system-library-security-crypto-pkcs11_kms.mf --- a/usr/src/pkg/manifests/system-library-security-crypto-pkcs11_kms.mf Sun Mar 11 22:00:47 2012 -0700 +++ b/usr/src/pkg/manifests/system-library-security-crypto-pkcs11_kms.mf Thu Feb 02 20:16:51 2012 +1100 @@ -23,25 +23,5 @@ set name=pkg.fmri \ value=pkg:/system/library/security/crypto/pkcs11_kms@$(PKGVERS) -set name=pkg.description value="PKCS#11 KMS Provider" -set name=pkg.summary value=pkcs11_kms -set name=info.classification \ - value=org.opensolaris.category.2008:System/Security +set name=pkg.obsolete value=true set name=variant.arch value=$(ARCH) -dir path=usr group=sys -dir path=usr/bin -dir path=usr/lib -dir path=usr/lib/$(ARCH64) -dir path=usr/lib/security -dir path=usr/lib/security/$(ARCH64) -file path=usr/bin/kmscfg group=sys mode=0555 -file path=usr/lib/$(ARCH64)/libkmsagent.so.1 -file path=usr/lib/libkmsagent.so.1 -file path=usr/lib/security/$(ARCH64)/pkcs11_kms.so.1 -file path=usr/lib/security/pkcs11_kms.so.1 -license cr_Sun license=cr_Sun -license lic_CDDL license=lic_CDDL -license usr/src/lib/libkmsagent/THIRDPARTYLICENSE \ - license=usr/src/lib/libkmsagent/THIRDPARTYLICENSE -link path=usr/lib/security/$(ARCH64)/pkcs11_kms.so target=pkcs11_kms.so.1 -link path=usr/lib/security/pkcs11_kms.so target=pkcs11_kms.so.1