Skip to content

Commit c4da96e

Browse files
committed
Use HMAC-SHA256 for upload signature generation
1 parent 102144c commit c4da96e

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

lib/uploadcare/param/upload/signature_generator.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
require 'digest'
3+
require 'openssl'
44

55
# Signature generator for signed uploads.
66
class Uploadcare::Param::Upload::SignatureGenerator
@@ -17,8 +17,7 @@ def self.call(config: Uploadcare.configuration)
1717
end
1818

1919
expires_at = Time.now.to_i + lifetime
20-
to_sign = secret_key + expires_at.to_s
21-
signature = Digest::MD5.hexdigest(to_sign)
20+
signature = OpenSSL::HMAC.hexdigest('sha256', secret_key, expires_at.to_s)
2221
{ signature: signature, expire: expires_at }
2322
end
2423
end

spec/uploadcare/param/upload/signature_generator_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
require 'digest'
3+
require 'openssl'
44

55
RSpec.describe Uploadcare::Param::Upload::SignatureGenerator do
66
it 'returns signature and expire' do
@@ -10,7 +10,7 @@
1010
result = described_class.call(config: config)
1111

1212
expect(result[:expire]).to eq(1030)
13-
expected_signature = Digest::MD5.hexdigest('secret1030')
13+
expected_signature = OpenSSL::HMAC.hexdigest('sha256', 'secret', '1030')
1414
expect(result[:signature]).to eq(expected_signature)
1515
end
1616

0 commit comments

Comments
 (0)