Class: Blobfish::Keyvault::PrivateKey

Inherits:
Object
  • Object
show all
Defined in:
lib/blobfish/keyvault/private_key.rb

Instance Method Summary collapse

Constructor Details

#initialize(key_id, requestor) ⇒ PrivateKey

Returns a new instance of PrivateKey.

Parameters:



10
11
12
13
# File 'lib/blobfish/keyvault/private_key.rb', line 10

def initialize(key_id, requestor)
  @key_id = key_id
  @requestor = requestor
end

Instance Method Details

#sign(digest, data) ⇒ Object

Raises:

  • (NotImplementedError)


14
15
16
17
18
19
20
21
22
23
24
# File 'lib/blobfish/keyvault/private_key.rb', line 14

def sign(digest, data)
  raise NotImplementedError, 'Only SHA-256 digest signature algorithm is currently supported.' unless digest.instance_of? OpenSSL::Digest::SHA256
  sha256 = Digest::SHA256.new
  base64_digest = Base64.strict_encode64(sha256.digest(data))
  url = @key_id + '/sign?api-version=' + ApiVersion::DEFAULT_API_VERSION
  response = @requestor.execute(:post, url, {alg: 'RS256', value: base64_digest}.to_json, {'Content-Type': "application/json"})
  base64_signature = JSON.parse(response)['value']
  base64_signature.tr!('-_', '+/')
  # TODO check: the previous 'base64_signature' could be missing padding '=' (equals) chars. Confirm that it is never required to complete the padding chars before decoding.
  Base64.decode64(base64_signature)
end