Class: Blobfish::Keyvault::PrivateKey
- Inherits:
-
Object
- Object
- Blobfish::Keyvault::PrivateKey
- Defined in:
- lib/blobfish/keyvault/private_key.rb
Instance Method Summary collapse
-
#initialize(key_id, requestor) ⇒ PrivateKey
constructor
A new instance of PrivateKey.
- #sign(digest, data) ⇒ Object
Constructor Details
#initialize(key_id, requestor) ⇒ PrivateKey
Returns a new instance of PrivateKey.
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
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 |