tools.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package apksigner
  2. import (
  3. "os"
  4. "path/filepath"
  5. "strconv"
  6. "strings"
  7. "notabug.org/Umnik/GoAndroidSDK/common/utils"
  8. )
  9. func getSingerNumber(line string) int {
  10. if !strings.Contains(line, "Signer #") {
  11. return -1
  12. }
  13. part := strings.SplitN(line, " ", 3)[1]
  14. if !strings.HasPrefix(part, "#") {
  15. return -1
  16. }
  17. res, err := strconv.Atoi(strings.Trim(part, "#"))
  18. if err != nil {
  19. return -1
  20. }
  21. return res
  22. }
  23. func getDN(line string) map[string]string {
  24. value := strings.Split(utils.TwoSpotValue(line), ", ")
  25. res := make(map[string]string, len(value))
  26. for _, i := range value {
  27. parts := strings.SplitN(i, "=", 2)
  28. res[strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1])
  29. }
  30. return res
  31. }
  32. func getNotProtectedFile(line string) string {
  33. return strings.TrimSpace(strings.SplitN(utils.TwoSpotValue(line), " ", 2)[0])
  34. }
  35. func apksignerFromPath(dirPath string) Apksigner {
  36. binPath := filepath.Join(dirPath, "apksigner")
  37. _, err := os.Stat(binPath)
  38. if err != nil {
  39. panic(err)
  40. }
  41. return Apksigner{binPath: binPath}
  42. }