pem 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -3
- data/lib/pem.rb +1 -0
- data/lib/pem/developer_center.rb +2 -21
- data/lib/pem/signing_request.rb +35 -0
- data/lib/pem/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b68718888e7043f9d2cf2fb97f318b900f44f09
|
4
|
+
data.tar.gz: ab1ac18480d341c687f4912ddd0c98620c6609ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 058c72a5c4c108f3404d8b0fcf2e90a4e67ba58782d5f34e7700dfaaa0e0b6f3d8a01346aaf98fa324829d537d9bb978bb512f1b87708a32e9dacd409c88e1bd
|
7
|
+
data.tar.gz: bb0c1b25082185d261a75568d52200ce8a59f0b52c180107f43fd8b8149b10dbe823ebc6494d071922a4c298716d455f75ddad1ec292d3c0dfbc54ae9c299d40
|
data/README.md
CHANGED
@@ -23,7 +23,8 @@ Tired of manually creating and maintaining your push notification profiles? Tire
|
|
23
23
|
```PEM``` does all that for, just by running ```pem```.
|
24
24
|
|
25
25
|
Follow the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)<br />
|
26
|
-
Sebastian Mayr ([@sebmasterkde](https://twitter.com/sebmasterkde)) who implemented the download mechanism of signing certificates
|
26
|
+
Sebastian Mayr ([@sebmasterkde](https://twitter.com/sebmasterkde)) who implemented the download mechanism of signing certificates
|
27
|
+
Alexander Schuch ([@schuchalexander](https://twitter.com/schuchalexander)) who automated the generation of the signing request
|
27
28
|
|
28
29
|
|
29
30
|
-------
|
@@ -59,7 +60,8 @@ Yes, that's the whole command!
|
|
59
60
|
This does the following:
|
60
61
|
|
61
62
|
- Verifies the production push certificate looks alright
|
62
|
-
-
|
63
|
+
- Renews the push certificate in case it's necessary
|
64
|
+
- Downloads the certificate
|
63
65
|
- Generates a new ```.pem``` file in the current working directory, which you can upload to your server
|
64
66
|
|
65
67
|
You can pass parameters like this:
|
@@ -71,7 +73,7 @@ In case you prefer environment variables:
|
|
71
73
|
|
72
74
|
- ```PEM_USERNAME```
|
73
75
|
- ```PEM_APP_IDENTIFIER```
|
74
|
-
- ```PEM_CERT_SIGNING_REQUEST```
|
76
|
+
- ```PEM_CERT_SIGNING_REQUEST``` in case you want to pass your own signing request file
|
75
77
|
|
76
78
|
# How does it work?
|
77
79
|
There are 2 actions involved:
|
@@ -79,6 +81,7 @@ There are 2 actions involved:
|
|
79
81
|
- Accessing the ```iOS Dev Center``` to download the latest ```aps_production.cer```. See: [developer_center.rb](https://github.com/KrauseFx/PEM/blob/master/lib/pem/developer_center.rb).
|
80
82
|
- Generating all the necessary profiles and files to prepare the finished ```.pem``` file. See: [cert_manager.rb](https://github.com/KrauseFx/PEM/blob/master/lib/pem/cert_manager.rb).
|
81
83
|
```PEM``` will create a temporary keychain called ```PEM.keychain``` and use that to generate the necessary profiles. That means ```PEM``` will not pollute your default keychain.
|
84
|
+
- The ```.certSigningRequest``` file will be generated in [signing_request.rb](https://github.com/KrauseFx/PEM/blob/master/lib/pem/signing_request.rb)
|
82
85
|
|
83
86
|
|
84
87
|
## How is my password stored?
|
data/lib/pem.rb
CHANGED
data/lib/pem/developer_center.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'deliver/password_manager'
|
2
2
|
require 'open-uri'
|
3
|
+
require 'openssl'
|
3
4
|
|
4
5
|
require 'capybara'
|
5
6
|
require 'capybara/poltergeist'
|
@@ -239,7 +240,7 @@ module PEM
|
|
239
240
|
wait_for_elements(".button.small.center.back") # just to wait
|
240
241
|
|
241
242
|
# Upload CSR file
|
242
|
-
first(:xpath, "//input[@type='file']").set
|
243
|
+
first(:xpath, "//input[@type='file']").set PEM::SigningRequest.get_path
|
243
244
|
|
244
245
|
click_next # "Generate"
|
245
246
|
|
@@ -252,26 +253,6 @@ module PEM
|
|
252
253
|
click_on "Edit"
|
253
254
|
end
|
254
255
|
|
255
|
-
def signing_request
|
256
|
-
return ENV["PEM_CERT_SIGNING_REQUEST"] if (ENV["PEM_CERT_SIGNING_REQUEST"] and File.exists?(ENV["PEM_CERT_SIGNING_REQUEST"]))
|
257
|
-
|
258
|
-
files = Dir["./*.certSigningRequest"]
|
259
|
-
if files.count == 1
|
260
|
-
Helper.log.debug "Found a .certSigningRequest at the current folder. Using that."
|
261
|
-
return files.first
|
262
|
-
end
|
263
|
-
|
264
|
-
path = nil
|
265
|
-
while not path or not File.exists?path
|
266
|
-
puts "There was no profile found. To create a new one, we need a .certSigningRequest file".yellow
|
267
|
-
puts "To not be asked for a .certSigningRequest, PEM will automatically look for one in the current folder".yellow
|
268
|
-
path = ask("Path to your .certSigningRequest file (including extension): ")
|
269
|
-
puts "Could not find certSigningRequest file at path '#{path}'".red unless File.exists?path
|
270
|
-
end
|
271
|
-
|
272
|
-
return path
|
273
|
-
end
|
274
|
-
|
275
256
|
|
276
257
|
private
|
277
258
|
def click_next
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module PEM
|
2
|
+
class SigningRequest
|
3
|
+
def self.get_path
|
4
|
+
return ENV["PEM_CERT_SIGNING_REQUEST"] if (ENV["PEM_CERT_SIGNING_REQUEST"] and File.exists?(ENV["PEM_CERT_SIGNING_REQUEST"]))
|
5
|
+
|
6
|
+
# Check if there is one in the current directory
|
7
|
+
files = Dir["./*.certSigningRequest"]
|
8
|
+
if files.count == 1
|
9
|
+
Helper.log.info "Found a .certSigningRequest at the current folder. Using that."
|
10
|
+
return files.first
|
11
|
+
end
|
12
|
+
|
13
|
+
return self.generate
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.generate
|
17
|
+
Helper.log.info "Couldn't find a signing certificate in the current folder. Creating one for you now.".green
|
18
|
+
@key = OpenSSL::PKey::RSA.new 2048
|
19
|
+
|
20
|
+
# Generate CSR
|
21
|
+
csr = OpenSSL::X509::Request.new
|
22
|
+
csr.version = 0
|
23
|
+
csr.subject = OpenSSL::X509::Name.new([
|
24
|
+
['CN', "PEM", OpenSSL::ASN1::UTF8STRING]
|
25
|
+
])
|
26
|
+
csr.public_key = @key.public_key
|
27
|
+
csr.sign @key, OpenSSL::Digest::SHA1.new
|
28
|
+
|
29
|
+
path = File.join(TMP_FOLDER, 'PEMCertificateSigningRequest.certSigningRequest')
|
30
|
+
File.write(path, csr.to_pem)
|
31
|
+
Helper.log.info "Successfully generated .certSigningRequest at path '#{path}'"
|
32
|
+
return path
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/pem/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -236,6 +236,7 @@ files:
|
|
236
236
|
- lib/pem/dependency_checker.rb
|
237
237
|
- lib/pem/developer_center.rb
|
238
238
|
- lib/pem/helper.rb
|
239
|
+
- lib/pem/signing_request.rb
|
239
240
|
- lib/pem/update_checker.rb
|
240
241
|
- lib/pem/version.rb
|
241
242
|
homepage: http://felixkrause.at
|