Chilkat Online Tools

ListCertificateAuthorities Objective-C Example

AWS Private CA

#import <CkoRest.h>
#import <CkoAuthAws.h>
#import <CkoJsonObject.h>
#import <CkoStringBuilder.h>
#import <NSString.h>

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

CkoRest *rest = [[CkoRest alloc] init];
BOOL success;

CkoAuthAws *authAws = [[CkoAuthAws alloc] init];
authAws.AccessKey = @"AWS_ACCESS_KEY";
authAws.SecretKey = @"AWS_SECRET_KEY";

// Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
authAws.Region = @"us-west-2";
authAws.ServiceName = @"acm-pca";
// SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
[rest SetAuthAws: authAws];

// URL: https://acm-pca.us-west-2.amazonaws.com/
// Use the same region as specified above.
success = [rest Connect: @"acm-pca.us-west-2.amazonaws.com" port: [NSNumber numberWithInt: 443] tls: YES autoReconnect: YES];
if (success != YES) {
    NSLog(@"%@%d",@"ConnectFailReason: ",[rest.ConnectFailReason intValue]);
    NSLog(@"%@",rest.LastErrorText);
    return;
}

// The following code creates the JSON request body.
// The JSON created by this code is shown below.

// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateInt: @"MaxResults" value: [NSNumber numberWithInt: 123]];
[json UpdateString: @"NextToken" value: @"string"];
[json UpdateString: @"ResourceOwner" value: @"string"];

// The JSON request body created by the above code:

// {
//   "MaxResults": number,
//   "NextToken": "string",
//   "ResourceOwner": "string"
// }

[rest AddHeader: @"Content-Type" value: @"application/x-amz-json-1.1"];
[rest AddHeader: @"X-Amz-Target" value: @"ACMPrivateCA.ListCertificateAuthorities"];

CkoStringBuilder *sbRequestBody = [[CkoStringBuilder alloc] init];
[json EmitSb: sbRequestBody];
CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
success = [rest FullRequestSb: @"POST" uriPath: @"/" requestBody: sbRequestBody responseBody: sbResponseBody];
if (success != YES) {
    NSLog(@"%@",rest.LastErrorText);
    return;
}

int respStatusCode = [rest.ResponseStatusCode intValue];
NSLog(@"%@%d",@"response status code = ",respStatusCode);
if (respStatusCode != 200) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",rest.ResponseHeader);
    NSLog(@"%@",@"Response Body:");
    NSLog(@"%@",[sbResponseBody GetAsString]);
    return;
}

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];

// The following code parses the JSON response.
// A sample JSON response is shown below the sample code.

// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON

NSString *Arn = 0;
int CRLSign;
int DataEncipherment;
int DecipherOnly;
int DigitalSignature;
int EncipherOnly;
int KeyAgreement;
int KeyCertSign;
int KeyEncipherment;
int NonRepudiation;
NSString *KeyAlgorithm = 0;
NSString *SigningAlgorithm = 0;
NSString *CommonName = 0;
NSString *Country = 0;
NSString *DistinguishedNameQualifier = 0;
NSString *GenerationQualifier = 0;
NSString *GivenName = 0;
NSString *Initials = 0;
NSString *Locality = 0;
NSString *Organization = 0;
NSString *OrganizationalUnit = 0;
NSString *Pseudonym = 0;
NSString *SerialNumber = 0;
NSString *State = 0;
NSString *Surname = 0;
NSString *Title = 0;
int CreatedAt;
NSString *FailureReason = 0;
NSString *KeyStorageSecurityStandard = 0;
int LastStateChangeAt;
int NotAfter;
int NotBefore;
NSString *OwnerAccount = 0;
int RestorableUntil;
NSString *CustomCname = 0;
int Enabled;
int ExpirationInDays;
NSString *S3BucketName = 0;
NSString *S3ObjectAcl = 0;
int OcspConfigurationEnabled;
NSString *OcspCustomCname = 0;
NSString *Serial = 0;
NSString *Status = 0;
NSString *v_Type = 0;
int j;
int count_j;
NSString *DirectoryNameCommonName = 0;
NSString *DirectoryNameCountry = 0;
NSString *DirectoryNameDistinguishedNameQualifier = 0;
NSString *DirectoryNameGenerationQualifier = 0;
NSString *DirectoryNameGivenName = 0;
NSString *DirectoryNameInitials = 0;
NSString *DirectoryNameLocality = 0;
NSString *DirectoryNameOrganization = 0;
NSString *DirectoryNameOrganizationalUnit = 0;
NSString *DirectoryNamePseudonym = 0;
NSString *DirectoryNameSerialNumber = 0;
NSString *DirectoryNameState = 0;
NSString *DirectoryNameSurname = 0;
NSString *DirectoryNameTitle = 0;
NSString *DnsName = 0;
NSString *NameAssigner = 0;
NSString *PartyName = 0;
NSString *IpAddress = 0;
NSString *TypeId = 0;
NSString *Value = 0;
NSString *RegisteredId = 0;
NSString *Rfc822Name = 0;
NSString *UniformResourceIdentifier = 0;
NSString *AccessMethodType = 0;
NSString *CustomObjectIdentifier = 0;

NSString *NextToken = [jResp StringOf: @"NextToken"];
int i = 0;
int count_i = [[jResp SizeOfArray: @"CertificateAuthorities"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    Arn = [jResp StringOf: @"CertificateAuthorities[i].Arn"];
    CRLSign = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.CRLSign"] intValue];
    DataEncipherment = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.DataEncipherment"] intValue];
    DecipherOnly = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.DecipherOnly"] intValue];
    DigitalSignature = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.DigitalSignature"] intValue];
    EncipherOnly = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.EncipherOnly"] intValue];
    KeyAgreement = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.KeyAgreement"] intValue];
    KeyCertSign = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.KeyCertSign"] intValue];
    KeyEncipherment = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.KeyEncipherment"] intValue];
    NonRepudiation = [[jResp IntOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.KeyUsage.NonRepudiation"] intValue];
    KeyAlgorithm = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.KeyAlgorithm"];
    SigningAlgorithm = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.SigningAlgorithm"];
    CommonName = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.CommonName"];
    Country = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Country"];
    DistinguishedNameQualifier = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.DistinguishedNameQualifier"];
    GenerationQualifier = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.GenerationQualifier"];
    GivenName = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.GivenName"];
    Initials = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Initials"];
    Locality = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Locality"];
    Organization = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Organization"];
    OrganizationalUnit = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.OrganizationalUnit"];
    Pseudonym = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Pseudonym"];
    SerialNumber = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.SerialNumber"];
    State = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.State"];
    Surname = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Surname"];
    Title = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.Subject.Title"];
    CreatedAt = [[jResp IntOf: @"CertificateAuthorities[i].CreatedAt"] intValue];
    FailureReason = [jResp StringOf: @"CertificateAuthorities[i].FailureReason"];
    KeyStorageSecurityStandard = [jResp StringOf: @"CertificateAuthorities[i].KeyStorageSecurityStandard"];
    LastStateChangeAt = [[jResp IntOf: @"CertificateAuthorities[i].LastStateChangeAt"] intValue];
    NotAfter = [[jResp IntOf: @"CertificateAuthorities[i].NotAfter"] intValue];
    NotBefore = [[jResp IntOf: @"CertificateAuthorities[i].NotBefore"] intValue];
    OwnerAccount = [jResp StringOf: @"CertificateAuthorities[i].OwnerAccount"];
    RestorableUntil = [[jResp IntOf: @"CertificateAuthorities[i].RestorableUntil"] intValue];
    CustomCname = [jResp StringOf: @"CertificateAuthorities[i].RevocationConfiguration.CrlConfiguration.CustomCname"];
    Enabled = [[jResp IntOf: @"CertificateAuthorities[i].RevocationConfiguration.CrlConfiguration.Enabled"] intValue];
    ExpirationInDays = [[jResp IntOf: @"CertificateAuthorities[i].RevocationConfiguration.CrlConfiguration.ExpirationInDays"] intValue];
    S3BucketName = [jResp StringOf: @"CertificateAuthorities[i].RevocationConfiguration.CrlConfiguration.S3BucketName"];
    S3ObjectAcl = [jResp StringOf: @"CertificateAuthorities[i].RevocationConfiguration.CrlConfiguration.S3ObjectAcl"];
    OcspConfigurationEnabled = [[jResp IntOf: @"CertificateAuthorities[i].RevocationConfiguration.OcspConfiguration.Enabled"] intValue];
    OcspCustomCname = [jResp StringOf: @"CertificateAuthorities[i].RevocationConfiguration.OcspConfiguration.OcspCustomCname"];
    Serial = [jResp StringOf: @"CertificateAuthorities[i].Serial"];
    Status = [jResp StringOf: @"CertificateAuthorities[i].Status"];
    v_Type = [jResp StringOf: @"CertificateAuthorities[i].Type"];
    j = 0;
    count_j = [[jResp SizeOfArray: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        DirectoryNameCommonName = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.CommonName"];
        DirectoryNameCountry = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Country"];
        DirectoryNameDistinguishedNameQualifier = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.DistinguishedNameQualifier"];
        DirectoryNameGenerationQualifier = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.GenerationQualifier"];
        DirectoryNameGivenName = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.GivenName"];
        DirectoryNameInitials = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Initials"];
        DirectoryNameLocality = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Locality"];
        DirectoryNameOrganization = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Organization"];
        DirectoryNameOrganizationalUnit = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.OrganizationalUnit"];
        DirectoryNamePseudonym = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Pseudonym"];
        DirectoryNameSerialNumber = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.SerialNumber"];
        DirectoryNameState = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.State"];
        DirectoryNameSurname = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Surname"];
        DirectoryNameTitle = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DirectoryName.Title"];
        DnsName = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.DnsName"];
        NameAssigner = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.EdiPartyName.NameAssigner"];
        PartyName = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.EdiPartyName.PartyName"];
        IpAddress = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.IpAddress"];
        TypeId = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.OtherName.TypeId"];
        Value = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.OtherName.Value"];
        RegisteredId = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.RegisteredId"];
        Rfc822Name = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.Rfc822Name"];
        UniformResourceIdentifier = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessLocation.UniformResourceIdentifier"];
        AccessMethodType = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessMethod.AccessMethodType"];
        CustomObjectIdentifier = [jResp StringOf: @"CertificateAuthorities[i].CertificateAuthorityConfiguration.CsrExtensions.SubjectInformationAccess[j].AccessMethod.CustomObjectIdentifier"];
        j = j + 1;
    }

    i = i + 1;
}

// A sample JSON response body parsed by the above code:

// {
//   "CertificateAuthorities": [
//     {
//       "Arn": "string",
//       "CertificateAuthorityConfiguration": {
//         "CsrExtensions": {
//           "KeyUsage": {
//             "CRLSign": boolean,
//             "DataEncipherment": boolean,
//             "DecipherOnly": boolean,
//             "DigitalSignature": boolean,
//             "EncipherOnly": boolean,
//             "KeyAgreement": boolean,
//             "KeyCertSign": boolean,
//             "KeyEncipherment": boolean,
//             "NonRepudiation": boolean
//           },
//           "SubjectInformationAccess": [
//             {
//               "AccessLocation": {
//                 "DirectoryName": {
//                   "CommonName": "string",
//                   "Country": "string",
//                   "DistinguishedNameQualifier": "string",
//                   "GenerationQualifier": "string",
//                   "GivenName": "string",
//                   "Initials": "string",
//                   "Locality": "string",
//                   "Organization": "string",
//                   "OrganizationalUnit": "string",
//                   "Pseudonym": "string",
//                   "SerialNumber": "string",
//                   "State": "string",
//                   "Surname": "string",
//                   "Title": "string"
//                 },
//                 "DnsName": "string",
//                 "EdiPartyName": {
//                   "NameAssigner": "string",
//                   "PartyName": "string"
//                 },
//                 "IpAddress": "string",
//                 "OtherName": {
//                   "TypeId": "string",
//                   "Value": "string"
//                 },
//                 "RegisteredId": "string",
//                 "Rfc822Name": "string",
//                 "UniformResourceIdentifier": "string"
//               },
//               "AccessMethod": {
//                 "AccessMethodType": "string",
//                 "CustomObjectIdentifier": "string"
//               }
//             }
//           ]
//         },
//         "KeyAlgorithm": "string",
//         "SigningAlgorithm": "string",
//         "Subject": {
//           "CommonName": "string",
//           "Country": "string",
//           "DistinguishedNameQualifier": "string",
//           "GenerationQualifier": "string",
//           "GivenName": "string",
//           "Initials": "string",
//           "Locality": "string",
//           "Organization": "string",
//           "OrganizationalUnit": "string",
//           "Pseudonym": "string",
//           "SerialNumber": "string",
//           "State": "string",
//           "Surname": "string",
//           "Title": "string"
//         }
//       },
//       "CreatedAt": number,
//       "FailureReason": "string",
//       "KeyStorageSecurityStandard": "string",
//       "LastStateChangeAt": number,
//       "NotAfter": number,
//       "NotBefore": number,
//       "OwnerAccount": "string",
//       "RestorableUntil": number,
//       "RevocationConfiguration": {
//         "CrlConfiguration": {
//           "CustomCname": "string",
//           "Enabled": boolean,
//           "ExpirationInDays": number,
//           "S3BucketName": "string",
//           "S3ObjectAcl": "string"
//         },
//         "OcspConfiguration": {
//           "Enabled": boolean,
//           "OcspCustomCname": "string"
//         }
//       },
//       "Serial": "string",
//       "Status": "string",
//       "Type": "string"
//     }
//   ],
//   "NextToken": "string"
// }