tree bfac715ca3eede7c09993389cde051e2104e5f19
parent a208ff8f4267be240504dc50d3a9b2eda2332a90
author Marri Devender Rao <devenrao@in.ibm.com> 1561978900 -0500
committer Marri Devender Rao <devenrao@in.ibm.com> 1564581647 -0500

Add support for Generate Certificate Signing Request(CSR)

Redfish supports generating CSR, added support for the same

Tested:
-------OP930-------
bash-4.2$ python python openbmctool.py -H $BMC_IP -U rrr -P pppp certificate
generatecsr server NJ w3.ibm.com US IBM IBM-UNIT NY EC 2048 prime256v1 cp
abc.com an.com,bm.com gn sn un in ClientAuthentication,CodeSigning

Attempting login...
Not supported
User bbbb has been logged out

-------OP940-------
bash-4.2$ python openbmctool.py -H $BMC_IP -U uuu -P ppp certificate generatecsr server NJ w3.ibm.com US IBM IBM-UNIT NY EC 2048 prime256v1 cp abc.com an.com,bm.com gn sn un in ClientAuthentication,CodeSigning
Attempting login...
Generating CSR url=/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/
GenerateCSR complete.
{
  "CSRString": "-----BEGIN CERTIFICATE REQUEST-----\nMIIByzCCAXICAQEwggEOMQ8wDQYDVR0RDAZhbi5jb20xDzANBgNVHREMBmJtLmNv\nbTELMAkGA1UEBwwCTkoxEzARBgNVBAMMCnczLmlibS5jb20xCzAJBgNVBCkMAmNw\nMQswCQYDVQQGEwJVUzEWMBQGCSqGSIb3DQEJARYHYWJjLmNvbTELMAkGA1UEKgwC\nZ24xCzAJBgNVBCsMAmluMQwwCgYEKw4DAgwCRUMxHTAbBgNVHQ8MFENsaWVudEF1\ndGhlbnRpY2F0aW9uMRQwEgYDVR0PDAtDb2RlU2lnbmluZzEMMAoGA1UECgwDSUJN\nMQswCQYDVQQIDAJOWTELMAkGA1UEBAwCc24xETAPBgkqhkiG9w0BCQIMAnVuMFkw\nEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9Rt+I8tkTneN+5w+Ln5YgrIlvjEVPFcI\nazDzmxgjL6jtaeDcha9cYtj/7VXA67WSp9odVGWhAgM61LMpP3DcNKAAMAoGCCqG\nSM49BAMCA0cAMEQCIDpPzyNqhoRCYHIXxbTaynQ/ac2Oa3zff2G5HBdqx+eBAiAZ\nl+O7TAYxr+UzbbgSWEARuc5Kc7c4xLwldtecwxPbRg==\n-----END CERTIFICATE REQUEST-----\n",
  "CertificateCollection": {
    "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/"
  }
}
User root has been logged out

bash-4.2$ python openbmctool.py -H $BMC_IP -U uuuu -P pppp certificate generatecsr --help
usage: openbmctool.py certificate generatecsr [-h]
                                              {server,client,authority} city
                                              commonName country organization
                                              organizationUnit state {RSA,EC}
                                              {2048} keyCurveId contactPerson
                                              email alternativeNames givenname
                                              surname unstructuredname
                                              initials keyUsage

positional arguments:
  {server,client,authority}
                        Generate CSR
  city                  The city or locality of the organization making the
                        request
  commonName            The fully qualified domain name of the component that
                        is being secured.
  country               The country of the organization making the request
  organization          The name of the organization making the request.
  organizationUnit      The name of the unit or division of the organization
                        making the request.
  state                 The state, province, or region of the organization
                        making the request.
  {RSA,EC}              The type of key pair for use with signing algorithms.
  {2048}                The length of the key in bits, if needed based on the
                        value of the 'KeyPairAlgorithm' parameter.
  keyCurveId            The curve ID to be used with the key, if needed based
                        on the value of the 'KeyPairAlgorithm' parameter.
  contactPerson         The name of the user making the request
  email                 The email address of the contact within the
                        organization
  alternativeNames      Additional hostnames of the component that is being
                        secured
  givenname             The given name of the user making the request
  surname               The surname of the user making the request
  unstructuredname      he unstructured name of the subject
  initials              The initials of the user making the request
  keyUsage              The usage of the key contained in the certificate

optional arguments:
  -h, --help            show this help message and exit

Signed-off-by: Marri Devender Rao <devenrao@in.ibm.com>
Change-Id: I12c0a1311e233a238806f500fd97048780f0e0c1
