Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'openssl'
- #
- #if ARGV.length < 2 || ARGV[2] != 'yes-i-know-that-burning-a-rotpk-might-brick-my-device'
- # puts 'Usage: mkrotpk public-key.pem rotpk.bin do-you-know-what-you-are-doing?'
- # exit false
- #end
- #
- key = OpenSSL::PKey::RSA.new(File.read(ARGV[0]))
- #
- n = key.params['n']
- e = key.params['e']
- if n.num_bits != 2048
- puts 'Need 2048-bit RSA key'
- exit false
- end
- n = [n.to_s(16)].pack('H*')
- e = [e.to_s(16)].pack('H*')
- #
- if n.length != 256
- puts 'fatal: n.length != 256 bytes'
- exit false
- end
- #
- if e.length > 256
- puts 'fatal: e.length > 256 bytes'
- exit false
- end
- #
- data = n + e.ljust(256, "\x91".b)
- rotpk = OpenSSL::Digest::SHA256.digest(data)
- #
- File.binwrite(ARGV[1], rotpk)
- #
- #
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement