"Fossies" - the Fresh Open Source Software Archive 
Member "gdrive-2.1.1/vendor/golang.org/x/oauth2/internal/oauth2.go" (28 May 2021, 2053 Bytes) of package /linux/misc/gdrive-2.1.1.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Go source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 // Copyright 2014 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // Package internal contains support packages for oauth2 package.
6 package internal
7
8 import (
9 "bufio"
10 "crypto/rsa"
11 "crypto/x509"
12 "encoding/pem"
13 "errors"
14 "fmt"
15 "io"
16 "strings"
17 )
18
19 // ParseKey converts the binary contents of a private key file
20 // to an *rsa.PrivateKey. It detects whether the private key is in a
21 // PEM container or not. If so, it extracts the the private key
22 // from PEM container before conversion. It only supports PEM
23 // containers with no passphrase.
24 func ParseKey(key []byte) (*rsa.PrivateKey, error) {
25 block, _ := pem.Decode(key)
26 if block != nil {
27 key = block.Bytes
28 }
29 parsedKey, err := x509.ParsePKCS8PrivateKey(key)
30 if err != nil {
31 parsedKey, err = x509.ParsePKCS1PrivateKey(key)
32 if err != nil {
33 return nil, fmt.Errorf("private key should be a PEM or plain PKSC1 or PKCS8; parse error: %v", err)
34 }
35 }
36 parsed, ok := parsedKey.(*rsa.PrivateKey)
37 if !ok {
38 return nil, errors.New("private key is invalid")
39 }
40 return parsed, nil
41 }
42
43 func ParseINI(ini io.Reader) (map[string]map[string]string, error) {
44 result := map[string]map[string]string{
45 "": map[string]string{}, // root section
46 }
47 scanner := bufio.NewScanner(ini)
48 currentSection := ""
49 for scanner.Scan() {
50 line := strings.TrimSpace(scanner.Text())
51 if strings.HasPrefix(line, ";") {
52 // comment.
53 continue
54 }
55 if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") {
56 currentSection = strings.TrimSpace(line[1 : len(line)-1])
57 result[currentSection] = map[string]string{}
58 continue
59 }
60 parts := strings.SplitN(line, "=", 2)
61 if len(parts) == 2 && parts[0] != "" {
62 result[currentSection][strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1])
63 }
64 }
65 if err := scanner.Err(); err != nil {
66 return nil, fmt.Errorf("error scanning ini: %v", err)
67 }
68 return result, nil
69 }
70
71 func CondVal(v string) []string {
72 if v == "" {
73 return nil
74 }
75 return []string{v}
76 }