Class: IOSCertEnrollment::Profile

Inherits:
Object
  • Object
show all
Defined in:
lib/ios-cert-enrollment/profile.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url = "") ⇒ Profile

Returns a new instance of Profile.



8
9
10
11
12
13
14
15
16
# File 'lib/ios-cert-enrollment/profile.rb', line 8

def initialize(url="")
  self.url = IOSCertEnrollment.base_url + url
  self.identifier = IOSCertEnrollment.identifier
  self.display_name = IOSCertEnrollment.display_name
  self.organization = IOSCertEnrollment.organization
  self.description = ""
  self.expiration = nil
  self.icon = nil
end

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def description
  @description
end

#display_nameObject

Returns the value of attribute display_name.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def display_name
  @display_name
end

#expirationObject

Returns the value of attribute expiration.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def expiration
  @expiration
end

#iconObject

Returns the value of attribute icon.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def icon
  @icon
end

#identifierObject

Returns the value of attribute identifier.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def identifier
  @identifier
end

#labelObject

Returns the value of attribute label.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def label
  @label
end

#organizationObject

Returns the value of attribute organization.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def organization
  @organization
end

#payloadObject

Returns the value of attribute payload.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def payload
  @payload
end

#urlObject

Returns the value of attribute url.



7
8
9
# File 'lib/ios-cert-enrollment/profile.rb', line 7

def url
  @url
end

Instance Method Details

#configuration(encrypted_content) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/ios-cert-enrollment/profile.rb', line 86

def configuration(encrypted_content)
    payload = general_payload()
    payload['PayloadIdentifier'] = self.identifier+".intranet"
    payload['PayloadType'] = "Configuration" # do not modify

    # strings that show up in UI, customisable
    payload['PayloadDisplayName'] = self.display_name
    payload['PayloadDescription'] = self.description
    payload['PayloadExpirationDate'] = self.expiration || Date.today + (360 * 10) # expire in 10 years

    payload['EncryptedPayloadContent'] = StringIO.new(encrypted_content)
    self.payload = Plist::Emit.dump(payload)
    return self
end

#encrypt(certificates) ⇒ Object



108
109
110
111
112
# File 'lib/ios-cert-enrollment/profile.rb', line 108

def encrypt(certificates)
  encrypted_profile = OpenSSL::PKCS7.encrypt(certificates, self.payload, OpenSSL::Cipher::Cipher::new("des-ede3-cbc"), OpenSSL::PKCS7::BINARY)
  return Certificate.new(encrypted_profile.to_der, "application/x-apple-aspen-config")        
  
end

#encrypted_serviceObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/ios-cert-enrollment/profile.rb', line 44

def encrypted_service
  ## ASA encryption_cert_payload
    payload = general_payload()

    payload['PayloadIdentifier'] = self.identifier+".encrypted-profile-service"
    payload['PayloadType'] = "Configuration" # do not modify

    # strings that show up in UI, customisable
    payload['PayloadDisplayName'] = self.display_name
    payload['PayloadDescription'] = self.description

    payload['PayloadContent'] = [encryption_cert_request("Profile Service")];
    self.payload = Plist::Emit.dump(payload)
    return self
end

#serviceObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ios-cert-enrollment/profile.rb', line 18

def service
    payload = general_payload()
    payload['PayloadType'] = "Profile Service" # do not modify
    payload['PayloadIdentifier'] = self.identifier+".mobileconfig.profile-service"

    # strings that show up in UI, customizable
    payload['PayloadDisplayName'] = self.display_name
    payload['PayloadDescription'] = self.description

    payload_content = Hash.new
   payload_content['URL'] = self.url
    payload_content['DeviceAttributes'] = [
        "UDID", 
        "VERSION",
        "PRODUCT",              # ie. iPhone1,1 or iPod2,1
        "DEVICE_NAME",          # given device name "My iPhone"
        "MAC_ADDRESS_EN0",
        "IMEI",
        "ICCID" 
        ];

    payload['PayloadContent'] = payload_content
    self.payload = Plist::Emit.dump(payload)
    return self
end

#signObject



102
103
104
105
106
# File 'lib/ios-cert-enrollment/profile.rb', line 102

def sign
  signed_profile = OpenSSL::PKCS7.sign(SSL.certificate, SSL.key,  self.payload, [], OpenSSL::PKCS7::BINARY)
  return Certificate.new(signed_profile.to_der, "application/x-apple-aspen-config")        
  
end

#webclipObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/ios-cert-enrollment/profile.rb', line 61

def webclip

    content_payload = general_payload()
    content_payload['PayloadIdentifier'] = self.identifier+".webclip.intranet"
    content_payload['PayloadType'] = "com.apple.webClip.managed" # do not modify

    # strings that show up in UI, customisable
    content_payload['PayloadDisplayName'] = self.display_name 
    content_payload['PayloadDescription'] = self.description

    # allow user to remove webclip
    content_payload['IsRemovable'] = true
    content_payload['Precomposed'] = true
    
    content_payload['Icon'] = self.icon if self.icon
    # the link
    content_payload['Label'] = self.label 
    content_payload['URL'] = self.url
    
    self.payload = Plist::Emit.dump([content_payload])
    return self
end