Author: Jérémy Derussé (jeremy@derusse.com)
 /**
  * @param QuestionHelper    $helper
  * @param InputInterface    $input
  * @param OutputInterface   $output
  * @param DistinguishedName $distinguishedName
  *
  * @return DistinguishedName
  */
 public function ask(QuestionHelper $helper, InputInterface $input, OutputInterface $output, DistinguishedName $distinguishedName)
 {
     $countryName = $distinguishedName->getCountryName() ?: $helper->ask($input, $output, new Question('What is your country two-letters code (field "C" of the distinguished name, for instance: "US")? : ', 'FR'));
     $stateOrProvinceName = $distinguishedName->getStateOrProvinceName() ?: $helper->ask($input, $output, new Question('What is your country province (field "ST" of the distinguished name, for instance: "California")? : '));
     $localityName = $distinguishedName->getLocalityName() ?: $helper->ask($input, $output, new Question('What is your locality (field "L" of the distinguished name, for instance: "Mountain View")? : '));
     $organizationName = $distinguishedName->getOrganizationName() ?: $helper->ask($input, $output, new Question('What is your organization/company (field "O" of the distinguished name, for instance: "Acme PHP")? : '));
     $organizationalUnitName = $distinguishedName->getOrganizationalUnitName() ?: $helper->ask($input, $output, new Question('What is your unit/department in your organization (field "OU" of the distinguished name, for instance: "Sales")? : '));
     $emailAddress = $distinguishedName->getEmailAddress() ?: $helper->ask($input, $output, new Question('What is your e-mail address (field "E" of the distinguished name)? : '));
     return new DistinguishedName($distinguishedName->getCommonName(), $countryName, $stateOrProvinceName, $localityName, $organizationName, $organizationalUnitName, $emailAddress, $distinguishedName->getSubjectAlternativeNames());
 }
 /**
  * Retrieves a CSR payload from the given distinguished name.
  *
  * @param DistinguishedName $distinguishedName
  *
  * @return array
  */
 private function getCSRPayload(DistinguishedName $distinguishedName)
 {
     $payload = ['commonName' => $distinguishedName->getCommonName()];
     if (null !== ($countryName = $distinguishedName->getCountryName())) {
         $payload['countryName'] = $countryName;
     }
     if (null !== ($stateOrProvinceName = $distinguishedName->getStateOrProvinceName())) {
         $payload['stateOrProvinceName'] = $stateOrProvinceName;
     }
     if (null !== ($localityName = $distinguishedName->getLocalityName())) {
         $payload['localityName'] = $localityName;
     }
     if (null !== ($OrganizationName = $distinguishedName->getOrganizationName())) {
         $payload['organizationName'] = $OrganizationName;
     }
     if (null !== ($organizationUnitName = $distinguishedName->getOrganizationalUnitName())) {
         $payload['organizationalUnitName'] = $organizationUnitName;
     }
     if (null !== ($emailAddress = $distinguishedName->getEmailAddress())) {
         $payload['emailAddress'] = $emailAddress;
     }
     return $payload;
 }