#2549 CA CLI: cert-request-submit throws UnmarshalException
Closed: migrated by dmoluguw. Opened by gkapoor.

CA CLI: cert-request-submit throws UnmarshalException when cert_request_type is
different that the "cert_request" format.

Steps to Reproduce:

Use the attached xml file and use cli:
    pki  -d . -c Secret123 -n "PKI CA Administrator for Example.Org" -h `hostname`
    -p 8080  cert-request-submit test.xml

Actual results:

javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not
allowed in prolog.]
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalExcep
tion(AbstractUnmarshallerImpl.java:335)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.c
reateUnmarshalException(UnmarshallerImpl.java:563)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.u
nmarshal0(UnmarshallerImpl.java:249)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.u
nmarshal(UnmarshallerImpl.java:214)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUn
marshallerImpl.java:157)
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUn
marshallerImpl.java:214)
        at com.netscape.certsrv.cert.CertEnrollmentRequest.fromXML(CertEnrollme
ntRequest.java:271)
        at com.netscape.cmstools.cert.CertRequestSubmitCLI.execute(CertRequestS
ubmitCLI.java:160)
        at com.netscape.cmstools.cli.CLI.execute(CLI.java:337)
        at com.netscape.cmstools.cert.CertCLI.execute(CertCLI.java:91)
        at com.netscape.cmstools.cli.ProxyCLI.execute(ProxyCLI.java:119)
        at com.netscape.cmstools.cli.CLI.execute(CLI.java:337)
        at com.netscape.cmstools.cli.MainCLI.execute(MainCLI.java:562)
        at com.netscape.cmstools.cli.MainCLI.main(MainCLI.java:574)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1;
Content is not allowed in prolog.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSA
XParseException(ErrorHandlerWrapper.java:203)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalErr
or(ErrorHandlerWrapper.java:177)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError
(XMLErrorReporter.java:400)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError
(XMLErrorReporter.java:327)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(
XMLScanner.java:1472)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$Prolo
gDriver.next(XMLDocumentScannerImpl.java:994)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(
XMLDocumentScannerImpl.java:602)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.nex
t(XMLNSDocumentScannerImpl.java:112)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerIm
pl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(
XML11Configuration.java:841)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(
XML11Configuration.java:770)
        at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(A
bstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.
parse(SAXParserImpl.java:643)
        at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.u
nmarshal0(UnmarshallerImpl.java:243)
        ... 11 more

Expected results:

User friendly message .It's hard to understand what is the root cause.

Additional info:

Test.xml file used::
[root@nocp1 abc]# cat test.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CertEnrollmentRequest>
    <Attributes/>
    <ProfileID>caUserCert</ProfileID>
    <Renewal>false</Renewal>
    <RemoteHost></RemoteHost>
    <RemoteAddress></RemoteAddress>
    <Input id="i1">
        <ClassID>keyGenInputImpl</ClassID>
        <Name>Key Generation</Name>
        <Attribute name="cert_request_type">
            <Value>pkcs10</Value>
            <Descriptor>
                <Syntax>keygen_request_type</Syntax>
                <Description>Key Generation Request Type</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="cert_request">
            <Value>
MIICQDCCASgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxLk1TLZbo
DblZWMZZHnCDQg/AWgBcvKQnWEIV/WHH0R0AxbgPdCTL7Xvug/P8XessAbokboh9
Rgo4wDpIRIYEwunpGLqjx3Tor6IvricOQEkAsWJMtet/F8lW3vstfCiMBtiaGkvS
uRp6Ev+9RPV0yb7GAh1ncbpBrg625V6f5nHkYYZwUnlxRClpcveojwOfLQy6Bouz
7IkVJSmIk3OUZZeemAM5b8wPNr+/t8lxNkeb12+6+lxKi9S6u6d1x2ZsJNedJjEn
ouhRurdagXQbM1Iq7CW6j6cwdJgY7yY4f0BzcPGGd2h+w6KZrkx16EnluZg+0l03
y1mIKeEhFwbpAgMBAAEWADANBgkqhkiG9w0BAQQFAAOCAQEAL2IIEH8KsWfPqcW+
bsylOV6kfGkf0J613M4TJ+u+K76L+yRLFlkJJ8YLbG5LIRjzp8xBW/2DctaOoho+
JCK/EaxJhI8z0DZGoXGzKadrRUySa0Vb0YSw0c+S0wAxc3wKi9089dk1PgcjdHYd
usA0i6o4R/85F/Vt4tJ/4YxiE8mwmfmEpc8d0nTl6pGh3HPYKCjumBV1NxuV7zEZ
EkRGHdH3q6fsCTOWZlVMGgZ4wujGthvcVltD+EieF3IB8o3e0yOyhJXClk7vmaCQ
T6nH7VC3nq8ijD3GgEhoB9+Ch7BWiO20FWDJPp7MgyrLXSn2+Ngi7huhEC4NbtbM NIaTUg==
            </Value>
            <Descriptor>
                <Syntax>keygen_request</Syntax>
                <Description>Key Generation Request</Description>
            </Descriptor>
        </Attribute>
    </Input>
    <Input id="i2">
        <ClassID>subjectNameInputImpl</ClassID>
        <Name>Subject Name</Name>
        <Attribute name="sn_uid">
            <Value>test</Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>UID</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_e">
            <Value>test@a.com</Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Email</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_cn">
            <Value>test</Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Common Name</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_ou3">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Organizational Unit 3</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_ou2">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Organizational Unit 2</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_ou1">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Organizational Unit 1</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_ou">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Organizational Unit</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_o">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Organization</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="sn_c">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Country</Description>
            </Descriptor>
        </Attribute>
    </Input>
    <Input id="i3">
        <ClassID>submitterInfoInputImpl</ClassID>
        <Name>Requestor Information</Name>
        <Attribute name="requestor_name">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Requestor Name</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="requestor_email">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Requestor Email</Description>
            </Descriptor>
        </Attribute>
        <Attribute name="requestor_phone">
            <Value></Value>
            <Descriptor>
                <Syntax>string</Syntax>
                <Description>Requestor Phone</Description>
            </Descriptor>
        </Attribute>
    </Input>
</CertEnrollmentRequest>

Per PKI Bug Council of 11/17/2016: 10.4 - minor

Metadata Update from @gkapoor:
- Issue set to the milestone: UNTRIAGED

Metadata Update from @mharmsen:
- Custom field feature adjusted to None
- Custom field proposedmilestone adjusted to None
- Custom field proposedpriority adjusted to None
- Custom field reviewer adjusted to None
- Custom field version adjusted to None
- Issue close_status updated to: None
- Issue set to the milestone: FUTURE (was: UNTRIAGED)

Per 10.5.x/10.6 Triage: FUTURE

alee: error case, usability issue

Dogtag PKI is moving from Pagure issues to GitHub issues. This means that existing or new
issues will be reported and tracked through Dogtag PKI's GitHub Issue tracker.

This issue has been cloned to GitHub and is available here:
https://github.com/dogtagpki/pki/issues/2669

If you want to receive further updates on the issue, please navigate to the
GitHub issue and click on Subscribe button.

Thank you for understanding, and we apologize for any inconvenience.

Metadata Update from @dmoluguw:
- Issue close_status updated to: migrated
- Issue status updated to: Closed (was: Open)

Metadata