다음을 통해 공유


XML 디지털 서명 암호화 확장

CryptXML을 사용하면 개발자가 시스템 전체 암호화 확장 DLL을 등록하여 기본적으로 지원되는 암호화 알고리즘을 확장할 수 있습니다. 확장 DLL은 SignatureMethod 및 DigestMethod XML 요소에서 지원하는 알고리즘 확장합니다. 확장 DLL은 추가 매개 변수를 XML 디지털 서명으로 인코딩하는 알고리즘을 지원할 수 있습니다.

모든 확장 DLL은 CRYPT_XML_CRYPTOGRAPHIC_INTERFACE 구조체에 대한 포인터를 반환하는 CryptXmlDllGetInterface 함수를 지원해야 합니다. 이 구조체는 구현된 암호화 확장 함수에 대한 함수 포인터를 제공합니다. 지원되는 함수는 지원되는 암호화 알고리즘의 유형과 알고리즘이 매개 변수를 XML 디지털 서명으로 인코딩해야 하는지 여부에 따라 달라집니다.

암호화 확장 함수에는 다음 함수 포인터가 포함됩니다.

필수 함수

다이제스트 메서드 함수

Signature 메서드 함수

기본 인코딩된 매개 변수가 있는 알고리즘의 경우

암호화 확장 DLL은 시스템 전체에 등록됩니다. 암호화 확장 DLL을 등록하려면 관리자 권한이 필요합니다.

모든 CryptXML 암호화 확장은 SignatureMethod 또는 DigestMethod 요소의 알고리즘 특성 필드에 설정된 URI 값에 의해 등록됩니다.

확장 DLL에 대한 레지스트리 경로는 다음과 같습니다.

32비트

Hkey_local_machine\소프트웨어\Microsoft\암호화\CryptXML\Uri\{uri}

64비트

Hkey_local_machine\소프트웨어\Microsoft\암호화\CryptXML\Uri\{uri}

Hkey_local_machine\소프트웨어\\ WOW6432NODEMicrosoft\암호화\CryptXML\Uri\{uri}

각 키에는 다음 설정이 포함됩니다.

Name 유형 데이터
DLL
확장 가능한 문자열
필수 요소.
XML 암호화 공급자 DLL의 절대 경로입니다.
**참고: **암호화 확장 DLL은 관리 권한이 있는 애플리케이션에서만 쓸 수 있는 디렉터리에 있는 것이 좋습니다.
LoadLibrary 는 암호화 확장 DLL을 로드하는 데 사용됩니다.
Name
String 선택 사항입니다.
이 URI와 연결된 표시 이름입니다.
GroupId
DWORD 필수 요소.
이 암호화 알고리즘과 연결된 그룹 식별자입니다. 가능한 값은 다음과 같습니다.CRYPT_XML_GROUP_ID_HASH<strong> = 1
< CRYPT_XML_GROUP_ID_SIGNstrong> = 2
CNGAlgid
String 필수 요소.
BCrypt 또는 NCrypt 함수에 전달할 CNG 알고리즘 이름입니다.
CNGExtraAlgid
String 선택 사항입니다.
CNG 함수에 전달할 수 있는 CNGAlgid 멤버의 문자열 이외의 추가 알고리즘 문자열입니다.
서명 알고리즘(CRYPT_XML_GROUP_ID_SIGN)의 경우 이 멤버는 CNG 함수에 전달할 공개 키 알고리즘 문자열입니다.
GroupId의 다른 값에 대해 pwszCNGExtraAlgid 멤버를 빈 문자열 L""로 설정합니다.

 

XML 디지털 서명 암호화 알고리즘