Advertisement
Guest User

Untitled

a guest
Aug 18th, 2020
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.71 KB | None | 0 0
  1.  
  2. require 'openssl'
  3. #
  4. #if ARGV.length < 2 || ARGV[2] != 'yes-i-know-that-burning-a-rotpk-might-brick-my-device'
  5. #   puts 'Usage: mkrotpk public-key.pem rotpk.bin do-you-know-what-you-are-doing?'
  6. #   exit false
  7. #end
  8. #
  9. key = OpenSSL::PKey::RSA.new(File.read(ARGV[0]))
  10. #
  11. n = key.params['n']
  12. e = key.params['e']
  13.  
  14. if n.num_bits != 2048
  15.     puts 'Need 2048-bit RSA key'
  16.     exit false
  17. end
  18.  
  19. n = [n.to_s(16)].pack('H*')
  20. e = [e.to_s(16)].pack('H*')
  21. #
  22. if n.length != 256
  23.     puts 'fatal: n.length != 256 bytes'
  24.     exit false
  25. end
  26. #
  27. if e.length > 256
  28.     puts 'fatal: e.length > 256 bytes'
  29.     exit false
  30. end
  31. #
  32. data = n + e.ljust(256, "\x91".b)
  33. rotpk = OpenSSL::Digest::SHA256.digest(data)
  34. #
  35. File.binwrite(ARGV[1], rotpk)
  36. #
  37. #
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement