diff options
| author | Paul Zabelin | 2016-04-17 03:22:31 -0700 | 
|---|---|---|
| committer | Paul Zabelin | 2016-04-17 03:22:31 -0700 | 
| commit | b5eb2866cfceb69b0d4dd4948273d679a884fbb2 (patch) | |
| tree | 1fdb61a7138642a1612bb201434e8ebda141cc8a /vendor/golang.org/x/oauth2/internal/oauth2.go | |
| parent | 8de8e05c483c6b5f23b14742315f1860211dcef7 (diff) | |
| download | gdrive-b5eb2866cfceb69b0d4dd4948273d679a884fbb2.tar.bz2 | |
add Go dependencies by godep
see https://github.com/tools/godep
Diffstat (limited to 'vendor/golang.org/x/oauth2/internal/oauth2.go')
| -rw-r--r-- | vendor/golang.org/x/oauth2/internal/oauth2.go | 76 | 
1 files changed, 76 insertions, 0 deletions
| diff --git a/vendor/golang.org/x/oauth2/internal/oauth2.go b/vendor/golang.org/x/oauth2/internal/oauth2.go new file mode 100644 index 0000000..fbe1028 --- /dev/null +++ b/vendor/golang.org/x/oauth2/internal/oauth2.go @@ -0,0 +1,76 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package internal contains support packages for oauth2 package. +package internal + +import ( +	"bufio" +	"crypto/rsa" +	"crypto/x509" +	"encoding/pem" +	"errors" +	"fmt" +	"io" +	"strings" +) + +// ParseKey converts the binary contents of a private key file +// to an *rsa.PrivateKey. It detects whether the private key is in a +// PEM container or not. If so, it extracts the the private key +// from PEM container before conversion. It only supports PEM +// containers with no passphrase. +func ParseKey(key []byte) (*rsa.PrivateKey, error) { +	block, _ := pem.Decode(key) +	if block != nil { +		key = block.Bytes +	} +	parsedKey, err := x509.ParsePKCS8PrivateKey(key) +	if err != nil { +		parsedKey, err = x509.ParsePKCS1PrivateKey(key) +		if err != nil { +			return nil, fmt.Errorf("private key should be a PEM or plain PKSC1 or PKCS8; parse error: %v", err) +		} +	} +	parsed, ok := parsedKey.(*rsa.PrivateKey) +	if !ok { +		return nil, errors.New("private key is invalid") +	} +	return parsed, nil +} + +func ParseINI(ini io.Reader) (map[string]map[string]string, error) { +	result := map[string]map[string]string{ +		"": map[string]string{}, // root section +	} +	scanner := bufio.NewScanner(ini) +	currentSection := "" +	for scanner.Scan() { +		line := strings.TrimSpace(scanner.Text()) +		if strings.HasPrefix(line, ";") { +			// comment. +			continue +		} +		if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") { +			currentSection = strings.TrimSpace(line[1 : len(line)-1]) +			result[currentSection] = map[string]string{} +			continue +		} +		parts := strings.SplitN(line, "=", 2) +		if len(parts) == 2 && parts[0] != "" { +			result[currentSection][strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1]) +		} +	} +	if err := scanner.Err(); err != nil { +		return nil, fmt.Errorf("error scanning ini: %v", err) +	} +	return result, nil +} + +func CondVal(v string) []string { +	if v == "" { +		return nil +	} +	return []string{v} +} | 
