1 # Copyright 2010 Google Inc.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
18 # Helper for loading keys from the PKCS12 files downloaded when
19 # setting up service accounts at the APIs Console.
23 # Loads a key from PKCS12 file, assuming a single private key
26 # @param [String] keyfile
27 # Path of the PKCS12 file to load. If not a path to an actual file,
28 # assumes the string is the content of the file itself.
29 # @param [String] passphrase
30 # Passphrase for unlocking the private key
32 # @return [OpenSSL::PKey] The private key for signing assertions.
33 def self.load_key(keyfile, passphrase)
35 if File.exists?(keyfile)
36 content = File.read(keyfile)
40 pkcs12 = OpenSSL::PKCS12.new(content, passphrase)
42 rescue OpenSSL::PKCS12::PKCS12Error
43 raise ArgumentError.new("Invalid keyfile or passphrase")