Это сумма из нескольких флагов: KC_SIGN_CMS + KC_IN_PEM + KC_OUT_PEM + KC_WITH_TIMESTAMP
Golang KalkanCryptCOM
Добрый день.
Сформировал как сказано было ранее (нужны бинарные данные)
но при подписании данных, выходит такое, и это не проходит проверку на сайте ezSigner.
Сохранил эти данные в файле форматом cms.
Возможно я что-то делаю не так, подскажите пожалуйста, верный ли я флаг сформировал и похожи ли эти подписанные данные на правду?
Добрый день! Да, флаги сформировали верно. Можете на knca@pki.gov.kz отправить подписанный файл? Посмотрим.
Да хорошо, отправил.
Добрый день.
Прошу помочь с подписанием с флагом DER.
Ранее писал на почту и скидывал файлы.
Будет ли обратная связь или как?
Продублирую:
- на вход подается исходный файл Tets2.txt, либо же любой текст
- Подписал с помощью 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 - подписал исходный файл через 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) перевести подпись в байты