Это сообщение CMS-ранее-PKCS7 SignedData , определенное в rfc5652 et pred с подписанным. Дайджест, который вы цитируете, который является элементом messagedigest в signatureattrs, соответствует описанию, приведенному в 5.4, дайджесту части значения eContent OCTET STRING в encapContentInfo, как описано в 5.2.
Так как вы не показали никакого кода для начала, вот примерно абсолютный минимум:
#include
#include
#include
#include
int main (void){
unsigned char hash[32];
// TEST CODE doesn't check or handle errors; DON'T USE FOR REAL
BIO *in = BIO_push (BIO_new(BIO_f_base64()), BIO_new_file ("54262612.pem","r"));
// file's PEM type not understood by PEM_read_PKCS7; rather than fixing
PKCS7 *outer = d2i_PKCS7_bio (in, NULL); // just bypass it
// assume signeddata with (nonomitted) content octetstring; should check
ASN1_OCTET_STRING *cont = outer->d.sign->contents->d.data;
// assume hash is sha256; should check digestalgs and signerinfo(s)
EVP_Digest (cont->data, cont->length, hash, NULL, EVP_sha256(), NULL);
for( int i = 0; i < 32; i++ ) printf ("%02x", hash[i]); putchar ('\n');
return 0;
}
Необходимо смочь сослаться на него через элемент MasterPage на текущей странице. Что-то как:
ContentPlaceHolder cph = (ContentPlaceHolder)Master.FindControl("column1");
Если в MasterPage codebehind, просто сошлитесь на него по имени.