How can I fix it?

I’m just developing the NFT Mint program and I’m going to implement the security for buyer accounts.
This is some of them of my code.

use anchor_lang::prelude::*;

use anchor_spl::{associated_token::AssociatedToken, token::Token};

use ed25519_dalek::{PublicKey, Signature, Verifier};

// use anchor_lang::solana_program::ed25519_program;

use serde::{Deserialize, Serialize};

use serde_json;
… … …
pub fn mint(
ctx: Context,
signature: Vec,
message: Vec
) → Result<()> {
// Deserialize the message into a PurchaseMessage struct
let message_str = String::from_utf8(message).map_err(|| ErrorCode::InvalidMessage)?;
let purchase_message: PurchaseMessage = serde_json::from_str(&message_str).map_err(|
| ErrorCode::InvalidMessage)?;

    // Verify the signature
    require!(
        ed25519_verify(&signature, message_str.as_bytes(), &ctx.accounts.mint_authority.key()),
        ErrorCode::InvalidSignature
    );
```... ... ...
pub fn ed25519_verify(signature: &[u8], message: &[u8], pubkey: &Pubkey) -> bool {
let pubkey_bytes = pubkey.to_bytes();
let pubkey = match PublicKey::from_bytes(&pubkey_bytes) {
Ok(key) => key,
Err(_) => return false,
};

let signature = match Signature::from_bytes(signature) {
    Ok(sig) => sig,
    Err(_) => return false,
};

pubkey.verify(message, &signature).is_ok()
}

#[derive(Serialize, Deserialize)]
struct PurchaseMessage {
metadata_title: String,
metadata_symbol: String,
metadata_uri: String,
sale_lamports: u64
}

#[error_code]
pub enum ErrorCode {
#[msg(" The provided signature is invalid.")]
InvalidSignature,
#[msg(" The provided message is invalid.")]
InvalidMessage,
}

And this is my Carog.tmol file.

[package]
name = “mint-nft”
version = “0.1.0”
description = “Created with Anchor”
edition = “2021”

[lib]
crate-type = [“cdylib”, “lib”]
name = “mint_nft”

[features]
default =
cpi = [“no-entrypoint”]
no-entrypoint =
no-idl =
no-log-ix-name =
idl-build = [“anchor-lang/idl-build”]

[dependencies]
anchor-lang = “0.30.0”
anchor-spl = “0.30.0”
base64 = “=0.21.7”
bincode = “1.3.3”
curve25519-dalek = “4.1.2”
ed25519-dalek = “1.0.1”
getrandom = { version = “0.2.15”, features = [“custom”] }
mpl-token-metadata = { version = “4.1.2” }
serde = “1.0.203”
serde_json = “1.0.117”
zeroize = “=1.3.0”

This is the errors:

error: target is not supported, for more information see: getrandom - Rust
→ src/lib.rs:267:9
|
267 | / compile_error!("
268 | | target is not supported, for more information see:
269 | | getrandom - Rust
270 | | ");
| |__________^

error[E0433]: failed to resolve: use of undeclared crate or module imp
→ src/lib.rs:291:5
|
291 | imp::getrandom_inner(dest)
| ^^^ use of undeclared crate or module imp

For more information about this error, try rustc --explain E0433.
error: could not compile getrandom (lib) due to 2 previous errors
warning: build failed, waiting for other jobs to finish…

How can I fix it?
Thank you in advance.

Have a look here:

1 Like

Thank you for your kind attention and your help.

But is it the same as my program?

It’s the same error cause so the same solution should work

1 Like

I don’t know well yet.
Could you offer the sample code based on my code?