MCPcopy Create free account
hub / github.com/LanceLRQ/deer-executor / ReadProblemGPGInfoZip

Function ReadProblemGPGInfoZip

common/persistence/problems/reader_zip.go:132–159  ·  view source on GitHub ↗

ReadProblemGPGInfoZip 读取题目携带的GPG信息(ZIP)

(problemFile string)

Source from the content-addressed store, hash-verified

130
131// ReadProblemGPGInfoZip 读取题目携带的GPG信息(ZIP)
132func ReadProblemGPGInfoZip(problemFile string) (string, error) {
133 zipReader, err := zip.OpenReader(problemFile)
134 if err != nil {
135 return "", errors.Errorf("open file (%s) error: %s", problemFile, err.Error())
136 }
137 defer zipReader.Close()
138
139 file, _, err := FindInZip(zipReader, ".gpg")
140 if err != nil {
141 if IsFileNotFoundError(err) {
142 return "", errors.Errorf("no GPG public key")
143 }
144 return "", err
145 }
146
147 elist, err := openpgp.ReadArmoredKeyRing(bufio.NewReader(*file))
148 if err != nil {
149 return "", err
150 }
151 if len(elist) < 1 {
152 return "", errors.Errorf("GPG key error")
153 }
154 rel := ""
155 for _, identify := range elist[0].Identities {
156 rel += identify.Name + "\n"
157 }
158 return rel, nil
159}

Callers 1

ReadProblemInfoFunction · 0.92

Calls 4

FindInZipFunction · 0.85
IsFileNotFoundErrorFunction · 0.85
ErrorfMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected