/** * xmlSecKeyDebugXmlDump: * @key: the pointer to key. * @output: the pointer to output FILE. * * Prints the information about the @key to the @output in XML format. */ void xmlSecKeyDebugXmlDump(xmlSecKeyPtr key, FILE *output) { xmlSecAssert(xmlSecKeyIsValid(key)); xmlSecAssert(output != NULL); fprintf(output, "<KeyInfo>\n"); fprintf(output, "<KeyMethod>"); xmlSecPrintXmlString(output, key->value->id->dataNodeName); fprintf(output, "</KeyMethod>\n"); fprintf(output, "<KeyType>"); if((xmlSecKeyGetType(key) & xmlSecKeyDataTypeSymmetric) != 0) { fprintf(output, "Symmetric\n"); } else if((xmlSecKeyGetType(key) & xmlSecKeyDataTypePrivate) != 0) { fprintf(output, "Private\n"); } else if((xmlSecKeyGetType(key) & xmlSecKeyDataTypePublic) != 0) { fprintf(output, "Public\n"); } else { fprintf(output, "Unknown\n"); } fprintf(output, "</KeyType>\n"); fprintf(output, "<KeyName>"); xmlSecPrintXmlString(output, key->name); fprintf(output, "</KeyName>\n"); if(key->notValidBefore < key->notValidAfter) { fprintf(output, "<KeyValidity notValidBefore=\"%ld\" notValidAfter=\"%ld\"/>\n", (unsigned long)key->notValidBefore, (unsigned long)key->notValidAfter); } if(key->value != NULL) { xmlSecKeyDataDebugXmlDump(key->value, output); } if(key->dataList != NULL) { xmlSecPtrListDebugXmlDump(key->dataList, output); } fprintf(output, "</KeyInfo>\n"); }
/** * xmlSecKeyReqMatchKey: * @keyReq: the pointer to key requirements object. * @key: the pointer to key. * * Checks whether @key matches key requirements @keyReq. * * Returns: 1 if key matches requirements, 0 if not and a negative value * if an error occurs. */ int xmlSecKeyReqMatchKey(xmlSecKeyReqPtr keyReq, xmlSecKeyPtr key) { xmlSecAssert2(keyReq != NULL, -1); xmlSecAssert2(xmlSecKeyIsValid(key), -1); if((keyReq->keyType != xmlSecKeyDataTypeUnknown) && ((xmlSecKeyGetType(key) & keyReq->keyType) == 0)) { return(0); } if((keyReq->keyUsage != xmlSecKeyDataUsageUnknown) && ((keyReq->keyUsage & key->usage) == 0)) { return(0); } return(xmlSecKeyReqMatchKeyValue(keyReq, xmlSecKeyGetValue(key))); }
/** * xmlSecKeyDebugDump: * @key: the pointer to key. * @output: the pointer to output FILE. * * Prints the information about the @key to the @output. */ void xmlSecKeyDebugDump(xmlSecKeyPtr key, FILE *output) { xmlSecAssert(xmlSecKeyIsValid(key)); xmlSecAssert(output != NULL); fprintf(output, "== KEY\n"); fprintf(output, "=== method: %s\n", (key->value->id->dataNodeName != NULL) ? (char*)(key->value->id->dataNodeName) : "NULL"); fprintf(output, "=== key type: "); if((xmlSecKeyGetType(key) & xmlSecKeyDataTypeSymmetric) != 0) { fprintf(output, "Symmetric\n"); } else if((xmlSecKeyGetType(key) & xmlSecKeyDataTypePrivate) != 0) { fprintf(output, "Private\n"); } else if((xmlSecKeyGetType(key) & xmlSecKeyDataTypePublic) != 0) { fprintf(output, "Public\n"); } else { fprintf(output, "Unknown\n"); } if(key->name != NULL) { fprintf(output, "=== key name: %s\n", key->name); } fprintf(output, "=== key usage: %d\n", key->usage); if(key->notValidBefore < key->notValidAfter) { fprintf(output, "=== key not valid before: %ld\n", (unsigned long)key->notValidBefore); fprintf(output, "=== key not valid after: %ld\n", (unsigned long)key->notValidAfter); } if(key->value != NULL) { xmlSecKeyDataDebugDump(key->value, output); } if(key->dataList != NULL) { xmlSecPtrListDebugDump(key->dataList, output); } }
/** * lasso_server_set_encryption_private_key_with_password: * @server: a #LassoServer * @filename_or_buffer:(allow-none): file name of the encryption key to load or its content as a * NULL-terminated string. * @password:(allow-none): an optional password to decrypt the encryption key. * * Load an encryption private key from a file and set it in the server object. If @password is * non-NULL try to decrypt the key with it. * * If @filename_or_buffer is NULL, it frees the currently setted key. * * Return value: 0 on success; another value if an error occured. * Since: 2.3 **/ int lasso_server_set_encryption_private_key_with_password(LassoServer *server, const gchar *filename_or_buffer, const gchar *password) { if (filename_or_buffer) { xmlSecKey *key = lasso_xmlsec_load_private_key(filename_or_buffer, password); if (! key || ! (xmlSecKeyGetType(key) & xmlSecKeyDataTypePrivate)) { return LASSO_SERVER_ERROR_SET_ENCRYPTION_PRIVATE_KEY_FAILED; } lasso_release_sec_key(server->private_data->encryption_private_key); server->private_data->encryption_private_key = key; } else { lasso_release_sec_key(server->private_data->encryption_private_key); } return 0; }