Golang KalkanCryptCOM

Это сумма из нескольких флагов: KC_SIGN_CMS + KC_IN_PEM + KC_OUT_PEM + KC_WITH_TIMESTAMP

Добрый день.
Сформировал как сказано было ранее (нужны бинарные данные)
image
но при подписании данных, выходит такое, и это не проходит проверку на сайте ezSigner.
Сохранил эти данные в файле форматом cms.
image

Возможно я что-то делаю не так, подскажите пожалуйста, верный ли я флаг сформировал и похожи ли эти подписанные данные на правду?

Добрый день! Да, флаги сформировали верно. Можете на knca@pki.gov.kz отправить подписанный файл? Посмотрим.

Да хорошо, отправил.

Добрый день.
Прошу помочь с подписанием с флагом DER.
Ранее писал на почту и скидывал файлы.
Будет ли обратная связь или как?

Продублирую:

  1. на вход подается исходный файл Tets2.txt, либо же любой текст
  2. Подписал с помощью COM библиотеки, используя флаг kalkanFlags = constants.KC_SIGN_CMS + constants.KC_IN_FILE + constants.KC_IN_DER + constants.KC_OUT_DER + constants.KC_WITH_TIMESTAMP
    На выход получил: Tets2.txt.cms
  3. подписал исходный файл через ezSigner
    На выход получил файл: FromEzSigner.txt.cms

Также прилагаю кусок кода по подписанию:

if nomer_komandi == 3 {
fmt.Println(“SignData…”)
rv = 0
errStr = “”
//kalkanFlags = 774 // KC_SIGN_CMS + KC_IN_PEM + KC_OUT_PEM + KC_WITH_TIMESTAMP
//kalkanFlags = 2306 // KC_OUT_BASE64 + KC_SIGN_CMS + KC_WITH_TIMESTAMP
//kalkanFlags = 1282 // KC_OUT_DER + KC_SIGN_CMS + KC_WITH_TIMESTAMP
//kalkanFlags = 1290 // KC_IN_DER + KC_OUT_DER + KC_SIGN_CMS + KC_WITH_TIMESTAMP

        //kalkanFlags = constants.KC_SIGN_CMS + constants.KC_WITH_TIMESTAMP + constants.KC_IN_DER + constants.KC_OUT_DER
        //kalkanFlags = constants.KC_SIGN_CMS + constants.KC_WITH_TIMESTAMP + constants.KC_OUT_BASE64
        kalkanFlags = constants.KC_SIGN_CMS + constants.KC_IN_FILE + constants.KC_IN_DER + constants.KC_OUT_DER + constants.KC_WITH_TIMESTAMP

        fmt.Print("Введите данные для подписи: ")
        reader := bufio.NewReader(os.Stdin)
        inData1, _ := reader.ReadString(inputdelimiter)
        inData = inData1
        inData2 := "Tets2.txt"
        fmt.Println()
        outSign = ""
        oleutil.MustCallMethod(comtest, "SignData", alias, kalkanFlags, inData2, &outSign)
        rv = 0
        errStr = ""
        oleutil.MustCallMethod(comtest, "GetLastErrorString", &errStr, &rv)
        if rv != 0 {
            fmt.Println("Error: ", rv)
            fmt.Println(errStr)
        } else {
            /*
                data, err := base64.StdEncoding.DecodeString(outSign)
                if err != nil {
                    fmt.Println("error:", err)
                    return
                }
            */

            d1 := []byte(outSign)
            err := os.WriteFile("Tets2.txt.cms", d1, 0644)
            if err != nil {
                panic(err)
            }

            fmt.Println(outSign)
            //fmt.Printf("%q\n", string(data))
            //fmt.Println(base64.StdEncoding.DecodeString(outSign))
        }
        fmt.Println("SignData... Ok \n")
    }

Файл подписанный мной и сайтом ezSigner отличаются. Выше есть скриншоты а также сами файлы были отправлены на почту.

Вопрос временно решен : сначала подписать как OUT_BASE64 потом через другие инструменты(например golang) перевести подпись в байты