Смирнов написал:Randoom написал:вопрос не столько в добавлении - сколько в проверке, будет ли проверяться стандартным способом подпись у такого документа - или надо будет писать кастомизированую проверку ?
Подпись будет проверяться стандартно, а вот брать и проверять штамп придётся самостоятельно.
Если это возможно хотелось бы помощи с следующими моментами
1) XAdES-C (как расширение для XAdES-T) подразумевает два дополнительных списка - CompleteCertificateRefs (и CompleteRevocationRefs) вводящих меня в некоторое замешательство.
Из объекта TSPCOM мы получаем Serial и Hash(+алгоритм), соответственно вставляем их в поля :
Код:
< UnsignedSignatureProperties >
< CompleteCertificateRefs >
< CertRefs >
< Cert >
< CertDigest >
< DigestMethod xmlns=" http ://www.w3.org/2000/09/xmldsig #" Algorithm=" http ://www.w3.org/2000/09/xmldsig #sha1"/ >
< DigestValue xmlns=" http ://www.w3.org/2000/09/xmldsig #">gkBzQxlGGptYR4pniNVJEGsgDio=< /DigestValue >
< / CertDigest >
< IssuerSerial>
< X509IssuerName xmlns=" http ://www.w3.org/2000/09/xmldsig # " >C=EE,O=AS Sertifitseerimiskeskus,CN=Juur-SK,emailAddress=pki@sk.ee</X509IssuerName >
< X509SerialNumber xmlns=" http ://www.w3.org/2000/09/xmldsig # " >1110287047< /X509SerialNumber >
< / IssuerSerial >
< / Cert >
< / CertRefs >
< / CompleteCertificateRefs >
А где в объекте TSPStamp собственно cам TimeStamp ?
UPDATE^
нашел случайно на форуме что-то в таком духе
Код:Timestamp data itself is stored in base64 format in < EncapsulatedTimeStamp > child element.
т.е. вроде как :
TSPStamp tspStamp = tspRequest.Send(true);
CAPICOM.Utilities utilities = new Utilities();
hashDataInfo.InnerText = utilities.Base64Encode(tspStamp.Export());
a) Я так понимаю - сам timestamp именно так и получается ? .... просто в примерах он обычно много меньше по размеру ....
Код:
< SignatureTimeStamp Id="S0-T0" >
< Include URI="#S0-SIG" >< /Include >
< EncapsulatedTimeStamp >MIIMYzADAgEAMIIMWgYJKoZIhvcNAQcCoIIMSzCCDEcCAQMxCzAJBgUrDgMCGgUAZSQAy4ewaA==
< /EncapsulatedTimeStamp>
< /SignatureTimeStamp >
а в тестовом случае получается
Код:
MIIFYAYJKoZIhvcNAQcCoIIFUTCCBU0CAQMxDDAKBgYqhQMCAgkFADBxBgsqhkiG
9w0BCRABBKBiBGAwXgIBAQYHKoUDAgImBDAfMAcGBSsOAwIaBBRwG5mp5SsqVgEV
K6kl1fsFA+PhqQIOAJg6WMV2AAAAAANBFE4YDzIwMDkwODEwMDk0NzU3WjAEAgIH
CAIIVf3YAIp2lfWgggLwMIIC7DCCApmgAwIBAgIKFrU8PgACAAAnWDAKBgYqhQMC
AgMFADBlMSAwHgYJKoZIhvcNAQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UE
BhMCUlUxEzARBgNVBAoTCkNSWVBUTy1QUk8xHzAdBgNVBAMTFlRlc3QgQ2VudGVy
IENSWVBUTy1QUk8wHhcNMDkwODA1MTE0NzQ4WhcNMTAwODA1MTE1NzQ4WjApMQsw
CQYDVQQGEwJSVTEaMBgGA1UEAxMRRGVtbyBUU0EgT3BlcmF0b3IwYzAcBgYqhQMC
AhMwEgYHKoUDAgIjAQYHKoUDAgIeAQNDAARA/0u5tRAd6aT5XRay1zRqHiJ52wGQ
dUyKrvqwzHtVyD2qzjfZpQkGeVkV0Fea9lvdruZFKPylmfkTilw0qMJ5k6OCAWEw
ggFdMA4GA1UdDwEB/wQEAwIGwDATBgNVHSUEDDAKBggrBgEFBQcDCDAdBgNVHQ4E
FgQUCxUeprj1nFjQvzhFGJUP+3uRKi0wHwYDVR0jBBgwFoAUbY9eBdlfrJEXlB6V
mgUwODd6ECowVQYDVR0fBE4wTDBKoEigRoZEaHR0cDovL3d3dy5jcnlwdG9wcm8u
cnUvY2VydGVucm9sbC9UZXN0JTIwQ2VudGVyJTIwQ1JZUFRPLVBSTygyKS5jcmww
gZ4GCCsGAQUFBwEBBIGRMIGOMDMGCCsGAQUFBzABhidodHRwOi8vd3d3LmNyeXB0
b3Byby5ydS9vY3NwbmMvb2NzcC5zcmYwVwYIKwYBBQUHMAKGS2h0dHA6Ly93d3cu
Y3J5cHRvcHJvLnJ1L0NlcnRFbnJvbGwvQ3J5cHRvX1Rlc3QlMjBDZW50ZXIlMjBD
UllQVE8tUFJPKDIpLmNydDAKBgYqhQMCAgMFAANBAB7MvtRfJNglXoomheod+/WR
vkY5pOqPow7R3mo6+ihP1SOllxMjiDBVsv5caiMp6k1zqgX74f3+gF0FGAg/Gocx
ggHRMIIBzQIBATBzMGUxIDAeBgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1
MQswCQYDVQQGEwJSVTETMBEGA1UEChMKQ1JZUFRPLVBSTzEfMB0GA1UEAxMWVGVz
dCBDZW50ZXIgQ1JZUFRPLVBSTwIKFrU8PgACAAAnWDAKBgYqhQMCAgkFAKCB+DAa
BgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIGYgPzX5
shFvHhnSta24WMYmSzCddBZx5PG6n1czfySsMIGoBgsqhkiG9w0BCRACDDGBmDCB
lTCBkjCBjwQU91wXrGcSpk/0rWKBxzm3yeMuzlEwdzBppGcwZTEgMB4GCSqGSIb3
DQEJARYRaW5mb0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpD
UllQVE8tUFJPMR8wHQYDVQQDExZUZXN0IENlbnRlciBDUllQVE8tUFJPAgoWtTw+
AAIAACdYMAoGBiqFAwICEwUABED7sEGRqtlkYYUwLrVgbYXHtJQTf3wVIPOctcez
EjOEGT3jxTRDS8COMytg6yt+KReKRWHJpltMXuJY7IQ96ODl
b) зачем в tspStamp.Import вторым параметром tspRequest ? т.е. как правильно поднимать объект timeStamp (и вообще - нужно ли? - не совсем понимаю технологию проверки) ?
2) Каким образом происходит проверка (интересуют оба варианта и онлайн (XAdES-T) и offline (XAdES-C и далее)) штампа времени, хотя бы "на пальцах"? Я смутно предполагаю, что это действие аналогичное проверке CAdES-T(-C и далее), а у Вас, вроде как есть опыт в этом вопросе.
перефразирую ... через TSP я могу получить метку времени системы долгосрочного хранения электронных документов (Serial?).
a) Как я могу обратиться, в данном случае к TSA Крипто-Про (как к поставщику услуг) для проверки штампа времени документа ?
b) Могу ли я сделать возможной offline проверку timestamp ?
p.s. в свете того что информации по данной теме, да еще и в свете .net + XML в инете ну очень мало - буду рад любой помощи.
p.p.s. пока жду ответа - часто меняю вопросы - так как приходит понимание и осознание глупости предшествующей формулировки, так что не обезсудьте )
Отредактировано пользователем 10 августа 2009 г. 18:23:43(UTC)
| Причина: Не указана