Class: Ekey::Certificate

Inherits:
Object
  • Object
show all
Defined in:
lib/ekey/certificate.rb

Constant Summary collapse

CA_UPLOAD_PAGE_URL =
"http://cabinet.ekey.ru/api/1.0/request/put"
CA_DOWNLOAD_PAGE_URL =
"http://cabinet.ekey.ru/api/1.0/certificates/get"
CERTIFICATE_LINE_LENGTH =
64

Class Method Summary collapse

Class Method Details

.add_container_to_csr(cert_req) ⇒ Object

Делит длинную строку base64 на строки по 64 символа. Это требование cabinet.ekey.ru к запросам на выпуск сертификата (CSR).



24
25
26
27
28
# File 'lib/ekey/certificate.rb', line 24

def self.add_container_to_csr(cert_req)
  stripted_body = cert_req.gsub("-----BEGIN CERTIFICATE REQUEST-----", '').gsub("-----END CERTIFICATE REQUEST-----", '').gsub(/[\r\n\s]/, '')
  parts = stripted_body.scan(/.{1,#{CERTIFICATE_LINE_LENGTH}}/)
  csr_with_container = "-----BEGIN CERTIFICATE REQUEST-----\n#{parts.join("\n")}\n-----END CERTIFICATE REQUEST-----"
end

.get_certificates(ca_request_ids) ⇒ Object



39
40
41
42
43
44
# File 'lib/ekey/certificate.rb', line 39

def self.get_certificates(ca_request_ids)
  id_list = Array(ca_request_ids).join(', ')
  ca_responce = RestClient.post(CA_DOWNLOAD_PAGE_URL, { :api_key => Ekey::Config.api_key,
                                                        :id_list => id_list })
  JSON(ca_responce)
end

.issue(csr, signature) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/ekey/certificate.rb', line 30

def self.issue(csr, signature)
  upload_responce = RestClient.post(CA_UPLOAD_PAGE_URL,
                                    { :api_key => Ekey::Config.api_key,
                                      :pkcs10 => add_container_to_csr(csr),
                                      :rcsign => signature },
                                    :multipart => true)
  JSON(upload_responce)
end